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:函数“bool __cdecl CreateClient(void)”(?CreateClient@@AW4XZ) 中引用的未解析的外部符号 __imp__AttachMGN

两个 DLL 都编译到同一个文件夹中。DependencyWalker 将函数 AttachMGN 显示为导出的。如果重要的话,主项目的依赖项设置为 Mgn 项目。

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

提前致谢。

4

2 回答 2

1

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

于 2010-03-19T23:28:04.247 回答
0

你的mgn.lib链接有main吗?听上去,似乎main找不到要链接到 DLL 的 lib 文件。

于 2010-03-19T23:25:36.093 回答