未解决的外部符号

时间:2010-03-19 23:22:23

标签: dllimport dllexport

我在解决方案中有两个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项目。

我相信我只是忽略了一些事情......

提前致谢。

2 个答案:

答案 0 :(得分:1)

您可能只是忘了将MGN.lib添加到main.dll

的链接参数中

答案 1 :(得分:0)

您的mgn.lib是否与main相关联?听到它的声音,看起来好像main找不到要链接DLL的lib文件。