0

我有一个第三方库(比如 tp.lib)和第三方 dll(比如 tp.dll),我需要在我的 C++ 项目中使用它们(我的项目制作了一个 dll,我们称之为 my.dll)。

我已经在头文件中包含了带有#pragma comment(lib, "libraryname") 的库,并且还在我的 C++ Visual Studio 项目的configurationproperties->linker->additional library 目录中包含了库文件的路径。

代码编译和链接正常。但无法执行。当我使用依赖检查我是否遗漏了什么时,我观察到找不到 tp.dll。tp.dll 位于 tp.lib 所在的同一库文件夹中。

我应该怎么做才能将 tp.dll 包含到 my.dll 中?

4

3 回答 3

1

DLL 有不同的搜索路径。从文档中引用以下内容:

对于隐式和显式链接,Windows 首先搜索“已知 DLL”,例如 Kernel32.dll 和 User32.dll。然后 Windows 按以下顺序搜索 DLL:

  1. 当前进程的可执行模块所在的目录。

  2. 当前目录。

  3. Windows 系统目录。GetSystemDirectory 函数检索此目录的路径。

  4. Windows 目录。GetWindowsDirectory 函数检索此目录的路径。

  5. PATH 环境变量中列出的目录。

注意 不使用 LIBPATH 环境变量。

于 2012-10-10T15:41:05.287 回答
0

运行时的搜索路径不包括放置 lib 库的文件夹,因此将 DLL 与 lib 一起放置不会使操作系统在运行时找到它。您可以将其添加到路径中,或移动 DLL。搜索优先级列表在 MSDN上。

于 2012-10-10T15:37:19.987 回答
0

您不能“将 dll 包含到另一个 dll 中”。您需要将它们部署在一起,或者将依赖项 dll 放在Windows 可以找到它的位置。

于 2012-10-10T15:38:32.113 回答