如何将DLL链接到我的项目?错误LNK2019:未解析的外部符号

时间:2013-02-26 13:33:34

标签: c++ windows function dll linker

我有一个文件foo.h,它有各种函数声明。所有这些功能都在文件foo.dll中实现。但是,当我包含.h文件并尝试使用任何函数时,我收到错误:

bar.obj : error LNK2019: unresolved external symbol SomeFunction

显然没有找到函数实现。

我该怎么做才能帮助编译器找到DLL中的定义并将它们与.h文件关联起来?

我见过有关__declspec(dllexport)__declspec(dllimport)的一些内容,但我仍然无法弄清楚如何使用它们。

3 个答案:

答案 0 :(得分:11)

您应该已经从DLL所有者收到了至少三个文件。你在运行时需要的DLL,带有导出函数声明的.h文件,你已经有了。和.lib文件,DLL的导入库。链接器需要哪个,因此它知道如何将函数添加到程序的导入表中。

您缺少告诉链接器需要链接.lib文件的步骤。它需要添加到项目的链接器的Input + Additional Dependencies设置中。或者最容易通过在源代码中编写链接器指令来完成:

#include "foo.h"
#pragma comment(lib, "foo.lib")

哪个适用于MSVC,不是便携式但链接永远不会。将.lib文件复制到项目目录或指定完整路径。

答案 1 :(得分:8)

我遇到了类似的问题。解决方案结果是DLL是64位,使用它的简单应用程序是32.我忘了在Configuration Manager中将其更改为x64。

答案 2 :(得分:3)

  1. 您需要在构建dll时在函数定义前指定__declspec(dllexport)关键字
  2. 您需要将.dll文件导入或加载到进程内存中。
  3. 您需要从该dll获取要使用的函数的地址。
  4. 一些有用的入门链接:: MSDN DocumentationSORandom