开发时的C ++ .lib,运行应用程序时的.dll

时间:2017-05-23 17:06:13

标签: c++ dll linker .lib

我正在使用公司内部SDK。安装后,它在32b / 64b中提供.lib文件(例如xyz.lib)以及两个头文件。当我创建一个使用SDK的应用程序时,我可以构建它,但是当我尝试运行它时,应用程序错误地说它正在寻找xyz.dll。 SDK应该包含此DLL吗?我可以从.lib文件生成.dll吗?从我的研究来看,它似乎是另一种方式。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

可以通过两种方式显式或隐式地加载DLL。

显式DLL加载涉及调用LoadLibrary然后调用GetProcAddress以获取要调用的导出函数的地址。

Implicit DLL加载在编译时通过链接到包含导出函数定义的lib文件来完成。这会为您的DLL添加一个依赖项,它将在运行时加载正确的DLL。

隐式链接的DLL使用Dynamic-Link Library Search Order来确定从哪里加载DLL。它将加载它找到的DLL的第一个实例,搜索顺序中记录的位置。

如果您要链接lib文件但找不到DLL,则表示它不存在于搜索路径中的任何位置。

获取已编译的DLL并将其粘贴在该路径中的某个位置。通常应用程序的工作目录很好。