将库和DLL包含在C ++项目中

including library and dll into c++ project

本文关键字:项目 包含 DLL      更新时间:2023-10-16

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

我在头文件中包含带有 #pragma 注释(lib,"libraryname")的库 并且还包括了库文件的路径,在我的C++ Visual Studio 项目中的配置属性->链接器->其他库目录中

代码编译和链接正常。 但无法执行。当我使用依赖检查我是否缺少某些内容时,我观察到找不到tp.dll。tp.dll 驻留在 tp.lib 所在的同一库文件夹中。

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

DLL具有不同的搜索路径。 下面引用文档:

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

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

  2. 当前目录。

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

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

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

注意不使用 LIBPATH 环境变量。

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

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