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

1tu0hz3e  于 2024-01-09  发布在  其他
关注(0)|答案(2)|浏览(255)

我开发了一个C++应用程序,它依赖于外部库依赖关系,主要是SDL。我想将库和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:How do I set the path to a DLL file in Visual Studio?这似乎对我不起作用,或者至少我不能让它为我工作。但是,如果我将所有DLL存储在指定的文件夹中,它会完成这项工作。
**关于问题2:**关于构建后事件的文档这似乎完成了部分工作。我现在可以将DLL复制到不同的文件夹中,但应用程序无法加载它们,因为它们需要存在于可执行文件所在的位置。

neskvpey

neskvpey1#

1.右键单击您的项目,然后单击Add>Com Referance
1.点击“浏览”按钮并选择dll

pbgvytdp

pbgvytdp2#

问题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) <-指定项目的根目录
PATH= <-指定项目根目录的绝对路径。必须使用此选项,否则不会在指定路径中查找。
%PATH% <-修改或删除当前引用,但不删除其核心。

回答问题2:

为此,您应该将它们直接添加到.exe位置,有一些方法可以绕过它,但它太复杂了,不应该这样做。
我通常如何将所有必需的DLL复制到我的targetDirectory中:
属性->配置属性->构建事件->预链接事件
使用以下命令
copy "$(ProjectDir)DLLs\*.dll" "$(TargetDir)" ping -n 6 127.0.0.1 > nul
下面的代码获取所有.dll结尾并将它们添加到TargetDir。
ping用于延迟它,以便它们在“复制”运行时正确链接,但继续其余部分,该示例中的链接将不正确。
要从不同的文件夹加载它们,应该在代码本身内部完成。
一些参考资料使用或良好的阅读:

  1. 3rd Party DLLs
  2. Loading DLLs
  3. Link an executable to DLL

相关问题