我有一个文件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。
一些有用的链接开始:: MSDN文档 , SO , 随机