解决方案中有两个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项目具有相关性,如果这很重要的话。
我相信我只是忽略了一些东西....
在此先感谢。
如何从VS环境做到这一点? :8对不起,这是我第一个win32项目。 – drumsta 2010-03-19 23:33:15
刚刚检查并且main.dll在“链接器” - >“输入”部分的“附加依赖项”字段中的值为%(AdditionalDependencies)。并且main.dll有一个依赖项设置为mgn.dll – drumsta 2010-03-19 23:42:17
添加mgn作为对main的引用,它与您用于将其设置为依赖项的菜单相同。 – 2010-03-19 23:46:46