这个问题已在SO上多次提出并回答,但我无法得到建议的解决方案适用于我的情况。我使用的库依赖于许多(~50)DLL。这是Windows 7 x64,Visual Studio 2015,C ++。
目标:(1)在开发期间,让调试器访问所需的DLL。 (2)对于部署,请在Windows安装程序中提供所需的DLL,或者将其作为压缩文件提供,以复制到可执行文件夹或其他文件夹中。如果DLL不在可执行文件夹中,则需要在执行期间告诉pgm。
对于(1),我尝试修改配置属性/调试/环境变量,以添加DLL的路径,C:\ ProgramFiles \ Octave \ Octave-4.2.1 \ bin。这不是出于某种原因。
在我更改任何内容之前,配置中显示的环境变量为$(LocalDebuggerEnvironment)
,评估值为PATH=;%PATH%
,而Inheirited值为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)部分的建议方法是什么?
答案 0 :(得分:1)
某些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%
等等。
答案 1 :(得分:0)
您可能在路径条目和%PATH%
环境变量之间遗漏了分号。尝试:
PATH=C:\ProgramFiles\Octave\Octave-4.2.1\bin;%PATH%
另一种选择是在系统环境中设置%PATH%
以包含包含DLL的目录。您必须重新启动Visual Studio才能获取环境更改。如果在调试器中正确设置路径,则可能不需要此选项。
您的DLL可以与程序位于同一目录中,在大多数情况下,程序都可以找到它们。 (也有例外......)您可以阅读here,了解Windows在运行不同类型的程序时如何搜索DLL。
查看程序搜索DLL的简单方法是使用Process Monitor向您显示程序搜索DLL的实时路径。