如何在Visual Studio中设置DLL的路径?

问题描述 投票:0回答:2

我开发了一个依赖外部库依赖项(主要是 SDL)的 C++ 应用程序。 希望将库和 DLL 文件一起存储在与

.vcxproj
文件不同的文件夹中。

问题1:如何让Visual Studio“找到”文件夹中的那些DLL?

问题2:构建时我想存储在相同的文件夹结构中,如何实现/可以实现吗?

示例:

Project_folder/SDL/SDL_2/lib/x86
-> 这里是 SDL 2 DLL。

Project_folder/SDL/SDL2_image/lib/x86
-> 更多 DLL。

注意,我需要 Visual Studio 来“获取”DLL 有两个不同的文件夹。

我尝试过的:

关于问题1: 如何在Visual Studio中设置DLL文件的路径? 这似乎对我不起作用,或者至少我无法让它对我有用。但是,如果我将所有 DLL 存储在指定的文件夹中,它确实可以完成这项工作。

关于问题 2: 有关构建后事件的文档 这似乎完成了部分工作。我现在可以将 DLL 复制到其他文件夹,但应用程序将无法加载它们,因为它们需要位于可执行文件所在的位置。

c++ visual-studio dll
2个回答
0
投票
  1. 右键单击您的项目,然后单击“添加”>“Com 参考”
  2. 点击“浏览”按钮并选择dll

0
投票

问题1的答案:

要包含一个或多个文件夹中的 DLL 文件,您可以使用以下内容,在项目的

properties
中指定。

添加以下关于在何处查找 DLL 的规范:

Right click your project -> Properties -> Configuration Properties -> Debugging -> Environment ->

对于单路径使用:

PATH=$(ProjectDir)\SDL\SDL_2\lib\x86;%PATH%

对于多个,请在示例中使用

;
指定:
PATH=$(ProjectDir)\SDL\SDL_2\lib\x86;$(ProjectDir)\SDL\SDL2_image\lib\x86;%PATH% 

注:

$(ProjectDir)
<- Specifies the root directory of your project

PATH=
<- Specifies Absolute path to the root directory of your project. Must be used otherwise it won't look in the specified path.

%PATH%
<- Modifies or Appends the current Reference without overwriting the core of it.

问题2的答案:

为此,您应该将它们直接添加到 .exe 位置,有一些解决方法,但它太复杂了,不应该这样做。

我通常如何将所有必需的 DLL 复制到我的 targetDirectory 中:

属性 -> 配置属性 -> 构建事件 -> 预链接事件

使用以下命令

copy "$(ProjectDir)DLLs\*.dll" "$(TargetDir)" ping -n 6 127.0.0.1 > nul

以下内容获取所有 .dll 结尾并将它们添加到 TargetDir。

ping 用于延迟它,以便它们在“复制”运行时正确链接,但继续其余部分,在该实例中链接将不正确。

要从不同的文件夹加载它们,应该在代码本身内部完成。

使用或值得阅读的一些参考文献:

  1. 第 3 方 DLL

  2. 加载DLL

  3. 将可执行文件链接到 DLL

© www.soinside.com 2019 - 2024. All rights reserved.