我有一个 Visual Studio 解决方案,它由两个 win32 项目组成:1) 应用程序 (.exe) 2) 函数包装器 (.dll)。
该解决方案处于原型设计阶段,因此所有类/功能都在(.exe)项目下实现 - 肮脏但快速且易于调试/测试。
我已经开始编写一个 DLL 包装器来“玩”MSExcel/VBA 中的功能并面临链接错误
error LNK2019: unresolved external symbol "public: __thiscall Date::Date(int,int,int)" (??0Date@@QAE@HHH@Z) referenced in function addNumbers
DLL头文件:
#ifdef LIBRARYWRAP_EXPORTS
#define LIBRARYWRAP_API __declspec(dllexport)
#else
#define LIBRARYWRAP_API __declspec(dllimport)
#endif
LIBRARYWRAP_API int _stdcall addNumbers(int a, int b);
DLL源文件:
#include "..\applicationProject\Date.h"
class Date;
LIBRARYWRAP_API int _stdcall addNumbers(int a, int b){
Date dummyDate(12,1,2014); // <- Linker error LNK2019.
return (a+b);
}
类Date
和构造Date::Date(int,int,int)
函数在应用程序项目(.exe)中定义Date.h
,Date.cpp
.
我已经尝试做的事情:
为 librarywrap 项目添加了新的参考。
Project -> Properties -> Common -> Add New Reference
. 选择“应用项目”。添加了额外的包含目录:
$(SolutionDir)\applicationProject
两个问题:
首先,我正在尝试做的事情是合法/可实现的吗?DLL 链接到应用程序项目,而通常它应该是其他方式 - 应用程序链接到 DLL。假设我有两个应用程序项目(.exe)和(.exe),是否可以将一个链接到另一个?
其次,如果第一个问题的答案是肯定的,我应该添加/更改什么以使其工作?
非常感谢!
尼古拉斯