代码之家  ›  专栏  ›  技术社区  ›  Permaquid

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

  •  6
  • Permaquid  · 技术社区  · 16 年前

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

    3 回复  |  直到 16 年前
        1
  •  4
  •   JaredPar    16 年前

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

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

    但是,在VisualStudio中没有可以直接设置的内容。

        2
  •  1
  •   Hans Passant    16 年前

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

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

        3
  •  1
  •   Community Mohan Dere    9 年前

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