我有一个第三方库(比方说,tp.lib)和我需要在我的C ++项目中使用的第三方dll(比方说,tp.dll)(我的项目制作了一个dll,我们称之为my.dll )。
我在头文件中包含了带有#pragma comment(lib,“libraryname”)的库 还包括我的C ++ Visual Studio项目中 configurationproperties-> linker->其他库目录中库文件的路径。
代码编译和链接没关系。但未能执行。当我使用依赖检查我是否遗漏了某些东西时,我发现找不到tp.dll。 tp.dll驻留在tp.lib所在的同一个库文件夹中。
我该怎么办才能将tp.dll包含在my.dll中?
答案 0 :(得分:1)
DLL具有不同的搜索路径。引用下面的docs:
通过隐式和显式链接,Windows首先搜索“已知DLL”,例如Kernel32.dll和User32.dll。 Windows然后按以下顺序搜索DLL:
当前进程的可执行模块所在的目录。
当前目录。
Windows系统目录。 GetSystemDirectory函数检索此目录的路径。
Windows目录。 GetWindowsDirectory函数检索此目录的路径。
- 醇>
PATH环境变量中列出的目录。
请注意 不使用LIBPATH环境变量。
答案 1 :(得分:0)
运行时的搜索路径不包含放置lib库的文件夹,因此将DLL与lib放在一起并不会使操作系统在运行时找到它。您可以将其添加到路径,或移动DLL。 list of search precedence is on MSDN。{{3}}。
答案 2 :(得分:0)
你不能“将dll包含在另一个dll中”。您需要将它们一起部署,或将依赖项dll放在Windows will find it。
的位置