c++ - 如何在调试和重新分发期间包含 DLL?

标签 c++ dll visual-studio-2015 path environment-variables

此问题已在 SO 上被多次询问和回答,但我无法获得适合我的情况的建议解决方案。我正在使用一个依赖于许多 (~50) DLL 的库。这是 Windows 7 x64、Visual Studio 2015、C++。

目标:(1) 在开发期间,让调试器访问所需的 DLL。 (2) 对于部署,在 Windows 安装程序中或作为压缩文件提供所需的 DLL,以将其复制到可执行文件的文件夹或其他文件夹中。如果 DLL 不在可执行文件的文件夹中,则需要有一种在执行期间告诉 pgm 的方法。

对于 (1),我尝试修改 Configuration Properties/Debugging/Environment 变量,以添加 DLL 的路径,C:\ProgramFiles\Octave\Octave-4.2.1\bin。由于某种原因,这不起作用。

在我更改任何内容之前,配置中显示的环境变量是$(LocalDebuggerEnvironment),评估值是PATH=;%PATH%,继承值是PATH=$(VCRedistPaths)%PATH%

添加我的条目后,我有

环境:

PATH=C:\ProgramFiles\Octave\Octave-4.2.1\bin%PATH%$(LocalDebuggerEnvironment)

我的条目:

PATH=C:\ProgramFiles\Octave\Octave-4.2.1\bin%PATH%

评估值:

PATH=C:\ProgramFiles\Octave\Octave-4.2.1\bin%PATH%
PATH=;%PATH%

继承值:

PATH=$(VCRedistPaths)%PATH%

但是启动调试器并没有找到 DLL。

更改 VS 调试器路径环境的正确方法是什么?

处理第 (2) 部分部署的建议方法是什么?

最佳答案

一些 PATH 环境变量串联看起来有问题。

尝试在文字字符串和变量的逻辑串联处插入 ;(分号)分隔符。

例如:

PATH=C:\ProgramFiles\Octave\Octave-4.2.1\bin%PATH%$(LocalDebuggerEnvironment)

会变成:

PATH=C:\ProgramFiles\Octave\Octave-4.2.1\bin;%PATH%;$(LocalDebuggerEnvironment)

PATH=C:\ProgramFiles\Octave\Octave-4.2.1\bin%PATH%

会变成:

PATH=C:\ProgramFiles\Octave\Octave-4.2.1\bin;%PATH%

等等。

关于c++ - 如何在调试和重新分发期间包含 DLL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43794638/

相关文章:

c++ - lineEdit 的显示困惑 - Qt

c++ - 将派生自 std::string 的类派生的类的数据成员设置为值

javascript - 查看传递给抛出异常的构造函数的字符串

linux - .dll .so -- 在 Windows 和 Linux 环境中加载

javascript - Typescript 和 Uncaught SyntaxError : Block-scoped declarations (let, const, function, class) 在严格模式之外还不支持

c++ - C++ 中的私有(private)基类可访问性

c# - 如何从 MVC 5 中的 dll 文件引用模型

c# - C# 什么时候释放 C++ DLL?

c++ - Windows KMFD HelloWorld 驱动程序部署任务失败

.net - 在哪里可以找到 Visual Studio 2015 的 wsdl.exe?