我在解决方案中有两个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)”中引用了未解析的外部符号__imp__AttachMGN(?CreateClient @@ AW4XZ)
两个DLL都编译到同一个文件夹中。 DependencyWalker将函数AttachMGN显示为已导出。如果重要的话,主项目将依赖设置为Mgn项目。
我相信我只是忽略了一些事情......
提前致谢。
答案 0 :(得分:1)
您可能只是忘了将MGN.lib添加到main.dll
的链接参数中答案 1 :(得分:0)
您的mgn.lib
是否与main
相关联?听到它的声音,看起来好像main
找不到要链接DLL的lib文件。