我在解决方案中有两个 WIN32 DLL 项目,main.dll 应该调用 mgn.dll 中的一个函数。
mgn.dll 有 mgn.h 头文件:
#ifdef MGN_EXPORTS
#define MGN_API __declspec(dllexport)
#else
#define MGN_API __declspec(dllimport)
#endif
extern "C" bool MGN_API AttachMGN(void);
和 mgn.cpp 源文件:
#include "stdafx.h"
#include "mgn.h"
MGN_API bool AttachMGN(void)
{
...
}
main.dll 从源文件之一调用 AttachMGN 函数:
#include "stdafx.h"
#include "..\mgn\mgn.h"
bool CreateClient()
{
return ::AttachMGN();
}
mgn.dll 编译成功。main.dll 在 VS 文本编辑器中没有显示任何错误,我可以使用“转到定义”功能进行导航。但是在构建过程中出现错误:
错误 LNK2019:函数“bool __cdecl CreateClient(void)”(?CreateClient@@AW4XZ) 中引用的未解析的外部符号 __imp__AttachMGN
两个 DLL 都编译到同一个文件夹中。DependencyWalker 将函数 AttachMGN 显示为导出的。如果重要的话,主项目的依赖项设置为 Mgn 项目。
我相信我只是忽略了一些东西......
提前致谢。