避免将第三方DLL复制到调试文件夹中

时间:2010-01-26 16:41:24

标签: visual-studio visual-studio-2008

我有一个在Visual Studio(2008)中构建的C ++应用程序,并链接到Boost DLL。在调试时,似乎我需要将Boost DLL复制到调试文件夹中,以便我在IDE中运行的exe可以链接到它。我可以使用后期构建步骤来复制DLL,但我想知道Visual Studio中是否有一个设置可以在调试时为DLL提供额外的搜索路径?

3 个答案:

答案 0 :(得分:4)

这里有一点误解。在调试时,Visual Studio本身不直接控制DLL加载到应用程序中。 DLL的加载由操作系统直接控制。当请求加载时,操作系统搜索一组有趣的目录以查找DLL。

VS影响DLL加载的主要方式是将它们复制到构建输出目录。这通常是运行应用程序的目录,因此是OS搜索必要DLL的路径之一。

操作系统搜索的目录由几个项目控制。最容易改变的是环境变量(我相信LIBPATH)。在调试模式下,您可以更改此环境变量以指向其他目录并从那里加载DLL。

但是,您无法在Visual Studio中直接设置任何内容。

答案 1 :(得分:1)

对于隐式链接到EXE的DLL,Windows上没有很多选项。将DLL存储在与EXE相同的文件夹中,您可以将其存储在PATH环境变量中列出的目录中。只保证列出c:\ windows \ system32,你不能合理地使用该文件夹。更改系统环境的安装程序可以正常工作,但仍然不合理。

唯一真正的选择是将DLL存储在WinSxS并行缓存中。您需要编写清单,以便Windows可以找到DLL。并且您需要编写安装程序以将DLL放入WinSxS中。鉴于文档的质量,您需要真正,真的想要这样做。

如果这只是调试的考虑因素,那么改变开发机器上的PATH可能并不是什么大问题。使用控制面板,系统小程序。

答案 2 :(得分:1)

您可以通过设置环境变量在Visual Studio中扩展PATH。这里有一个很好的解释: How do I set a path in visual studio?

相关问题