2010-03-19 137 views
1

解决方案中有两个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:解析外部符号__imp__AttachMGN在函数引用“布尔__cdecl CreateClient(无效)”(?CreateClient @@ AW4XZ)

两个DLL文件编译成同一个文件夹。 DependencyWalker将导出的AttachMGN函数显示出来。主要项目对Mgn项目具有相关性,如果这很重要的话。

我相信我只是忽略了一些东西....

在此先感谢。

回答

1

您可能只是忘了将MGN.lib添加到main.dll的链接参数中

+0

如何从VS环境做到这一点? :8对不起,这是我第一个win32项目。 – drumsta 2010-03-19 23:33:15

+0

刚刚检查并且main.dll在“链接器” - >“输入”部分的“附加依赖项”字段中的值为%(AdditionalDependencies)。并且main.dll有一个依赖项设置为mgn.dll – drumsta 2010-03-19 23:42:17

+2

添加mgn作为对main的引用,它与您用于将其设置为依赖项的菜单相同。 – 2010-03-19 23:46:46

0

您的mgn.libmain连接?通过它的声音,看起来好像main找不到要链接到DLL的lib文件。