如何定义正确设置 __declspec 的宏
How to define macro which correctly sets the __declspec
使用 Visual Studio 2017,我正在尝试构建导入库的最新项目,库又从 .dll
文件导入方法和函数。
在构建我的项目时,我得到了如下错误列表:
error LNK2001: unresolved external symbol "__declspec(dllimport) void __cdecl UserTracking(void *)" (__imp_?UserTracking@@YAXPEAX@Z)
error LNK2001: unresolved external symbol "public: bool __cdecl EACServer::Destroy(void)const " (?Destroy@EACServer@@QEBA_NXZ)
error LNK2001: unresolved external symbol "public: bool __cdecl EACServer::Initialize(void)const " (?Initialize@EACServer@@QEBA_NXZ)
...
列出的所有函数均来自导入库。
例如,EACServer::Initialize
方法定义为 EACServer.h
:
bool Initialize() const;
在我正在编译的代码中,这个函数是这样使用的(相应的头文件在.h
文件ofc中导入):
this->eacServer = EACServer();
this->eacServer.Initialize();
EACServer
的class定义是基本的:
class EACServer : IRoot {
...
}
我被告知抛出这些错误是因为我缺少正确设置 __declspec
的宏。
如何find/implement这个宏?
原来虽然我在链接器附加库目录中添加了我的库的路径,但我忽略了在链接器附加依赖项中添加 .lib
文件。
使用 Visual Studio 2017,我正在尝试构建导入库的最新项目,库又从 .dll
文件导入方法和函数。
在构建我的项目时,我得到了如下错误列表:
error LNK2001: unresolved external symbol "__declspec(dllimport) void __cdecl UserTracking(void *)" (__imp_?UserTracking@@YAXPEAX@Z)
error LNK2001: unresolved external symbol "public: bool __cdecl EACServer::Destroy(void)const " (?Destroy@EACServer@@QEBA_NXZ)
error LNK2001: unresolved external symbol "public: bool __cdecl EACServer::Initialize(void)const " (?Initialize@EACServer@@QEBA_NXZ)
...
列出的所有函数均来自导入库。
例如,EACServer::Initialize
方法定义为 EACServer.h
:
bool Initialize() const;
在我正在编译的代码中,这个函数是这样使用的(相应的头文件在.h
文件ofc中导入):
this->eacServer = EACServer();
this->eacServer.Initialize();
EACServer
的class定义是基本的:
class EACServer : IRoot {
...
}
我被告知抛出这些错误是因为我缺少正确设置 __declspec
的宏。
如何find/implement这个宏?
原来虽然我在链接器附加库目录中添加了我的库的路径,但我忽略了在链接器附加依赖项中添加 .lib
文件。