我正在使用公司内部SDK。安装后,它在32b / 64b中提供.lib文件(例如xyz.lib)以及两个头文件。当我创建一个使用SDK的应用程序时,我可以构建它,但是当我尝试运行它时,应用程序错误地说它正在寻找xyz.dll。 SDK应该包含此DLL吗?我可以从.lib文件生成.dll吗?从我的研究来看,它似乎是另一种方式。有什么想法吗?
答案 0 :(得分:1)
可以通过两种方式显式或隐式地加载DLL。
显式DLL加载涉及调用LoadLibrary
然后调用GetProcAddress
以获取要调用的导出函数的地址。
Implicit DLL加载在编译时通过链接到包含导出函数定义的lib
文件来完成。这会为您的DLL添加一个依赖项,它将在运行时加载正确的DLL。
隐式链接的DLL使用Dynamic-Link Library Search Order来确定从哪里加载DLL。它将加载它找到的DLL的第一个实例,搜索顺序中记录的位置。
如果您要链接lib
文件但找不到DLL,则表示它不存在于搜索路径中的任何位置。
获取已编译的DLL并将其粘贴在该路径中的某个位置。通常应用程序的工作目录很好。