如何链接一个DLL到我的项目? 错误LNK2019:无法parsing的外部符号

我有一个文件foo.h具有不同的函数声明。 所有这些函数都是在一个文件foo.dll中实现的。 但是,当我包含.h文件并尝试使用任何函数时,出现错误:

 bar.obj : error LNK2019: unresolved external symbol SomeFunction 

所以显然function实现没有被发现。

我需要做些什么来帮助编译器findDLL中的定义并将它们与.h文件关联起来?

我已经看到一些关于__declspec(dllexport)__declspec(dllimport)但我仍然无法弄清楚如何使用它们。

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

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

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

这适用于MSVC,而不是其他便携式,但连接永远不会。 将.lib文件复制到您的项目目录或指定完整路径。

我刚刚有一个类似的问题。 解决方案原来是DLL是64位的,使用它的简单应用程序是32个。我忘了在配置管理器中将其更改为x64。

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

一些有用的链接开始:: MSDN文档 , SO , 随机