【问题标题】:Visual Studio 2008: Use external Debug-DLL for Debug-Run and external Release-DLL for Release-RunVisual Studio 2008:使用外部 Debug-DLL 进行 Debug-Run 和外部 Release-DLL 进行 Release-Run
【发布时间】:2011-03-20 23:56:20
【问题描述】:

短版: 如果在发布模式下从 VS2008 运行程序,我希望它使用 pathA\externaldll.dll。 如果在调试模式下从 VS2008 运行程序,我希望它使用 pathB\externaldll.dll

加长版: 我有一个与外部 dll 文件(VTK)链接的程序。我自己在调试和发布模式下构建了外部应用程序。外部 dll 文件的位置如下:

<some path>\Debug\externalDll.dll
<some path>\Release\externalDll.dll

(因此它们被称为相同,但具有不同的文件夹)。

我想进入 Debug Builds 的外部代码,但我希望 Release Builds 使用 Release DLL 来测试执行时间(我处理大型数据集)。

链接到相应的 dll 很容易,因为我有相应的项目设置。但是在执行时,Visual Studio 会获取它在 PATH 环境变量中找到的第一个 dll。

繁琐的解决思路: 具有 PATH 变量,例如: PATH=;%CURRENTDLLPATH%; 并在构建后步骤中设置 CURRENTDLLPATH。 VS2008没有内置解决方案吗?

【问题讨论】:

    标签: c++ visual-studio-2008 dll configuration


    【解决方案1】:

    其实有一个内置的简单方法:

    “项目设置”/调试中的“环境”变量。

    因此将环境变量设置为

    PATH=C:\Paraview\ParaView-3.8.0\gen\bin\$(ConfigurationName);%PATH%
    

    要执行的项目就可以了。

    这个问题在这里回答了好几次了,就是没找到 (例如How do I set a path in visual studio?

    【讨论】:

      【解决方案2】:

      为什么不在 Debug 和 Release 中为外部 Dll 赋予不同的文件名,并将两个目录都添加到 PATH 中?

      【讨论】:

      • 因为重命名生成的 dll 文件不起作用(因为 .lib-Files 指向旧文件名)并且外部应用程序使用我不太熟悉的构建系统与(Cmake)。我不得不深入挖掘外部构建系统以根据配置查找并重命名所有外部 dll 构建目标。
      【解决方案3】:

      您可以添加一个构建步骤,将正确的 DLL 复制到 PATH 中的文件夹,并在 Debug 和 Release 模式下进行不同的构建步骤。

      【讨论】:

        【解决方案4】:

        您的调试构建输出文件应该转到 ./debug 文件夹,而您的发布输出文件应该转到 ./release 文件夹。

        您应该将适当的外部 DLL 文件复制到此输出文件夹中:使用预构建步骤并使用 VS 宏 $(ConfigurationName) 来引用调试/发布。

        【讨论】:

          猜你喜欢
          • 2013-03-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-08-31
          • 1970-01-01
          • 1970-01-01
          • 2020-03-06
          • 1970-01-01
          相关资源
          最近更新 更多