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文件复制到项目目录或指定完整路径.
我刚遇到类似的问题.解决方案结果是DLL是64位,使用它的简单应用程序是32.我忘了在Configuration Manager中将其更改为x64.
归档时间: |
|
查看次数: |
24687 次 |
最近记录: |