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

xcd*_*n05 10 c++ windows dll linker function

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

bar.obj : error LNK2019: unresolved external symbol SomeFunction
Run Code Online (Sandbox Code Playgroud)

显然没有找到功能实现.

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

我已经看过一些关于它的东西__declspec(dllexport),__declspec(dllimport)但我仍然无法弄清楚如何使用它们.

Han*_*ant 11

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

您错过了告诉链接器需要链接.lib文件的步骤.它需要添加到项目的链接器的Input + Additional Dependencies设置中.或者最简单的方法是在源代码中编写链接器指令:

#include "foo.h"
#pragma comment(lib, "foo.lib")
Run Code Online (Sandbox Code Playgroud)

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


Dar*_*enW 8

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

  • 你在网上搜索了三个小时后就节省了我的一天. (3认同)