c++ - 如何将 DLL 链接到我的项目?错误 LNK2019 : unresolved external symbol

标签 c++ windows function dll linker

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

bar.obj : error LNK2019: unresolved external symbol SomeFunction

很明显没有找到函数实现。

我必须做什么才能帮助编译器找到 DLL 中的定义并将它们与 .h 文件相关联?

我看过一些关于 __declspec(dllexport)__declspec(dllimport) 的东西,但我仍然不知道如何使用它们。

最佳答案

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

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

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

适用于 MSVC,否则不可移植,但链接从来都不是。将 .lib 文件复制到您的项目目录或指定完整路径。

关于c++ - 如何将 DLL 链接到我的项目?错误 LNK2019 : unresolved external symbol,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15090418/

相关文章:

windows - JMeter 命令行 - linux 版本 vs windows 版本

c# - 查找串行设备 COM 端口

事件上的 JavaScript 函数在声明上运行

C++ win32 : adding values to ComboBox

c++ - 无需运行即可构建 CLion

C++ SFINAE 在引用类型和转换为引用的参数之间选择重载?

c++ - Qt 将不完整的 JPEG 数据加载到 QPixMap 如何验证?

windows - 如何调用 LogonUser() 以在启用 UAC 的 Windows 服务中获取不受限制的完整 token ?

C++:如何从函数返回 shared_ptr

javascript - 有没有一种方法可以可变地命名函数