【问题标题】:Setting Environment variable in Visual studio C++project在 Visual Studio C++ 项目中设置环境变量
【发布时间】:2015-10-11 14:47:35
【问题描述】:

我意识到之前发布了类似的问题,但我需要稍微不同的解决方案。
我有 VS2012 C++ 项目 A.vcxproj,它有 debug1 配置(平台 x64),它构建了相应的 .exe。它还使用来自其他 VS2012 C 项目 B.vcxproj 的 dll 来自必须添加到环境变量的路径。 A.vcxproj.user 文件有以下文本

<LocalDebuggerEnvironment>PATH=%PATH%;C:\Program Files\libsndfile\bin;..\..\lib\simulink\;$(LocalDebuggerEnvironment)  </LocalDebuggerEnvironment>

我需要将此设置自动添加到具有以下约束的“A”项目中

  1. 我无法将用户文件导出为“每个用户”,因此无法上传到其他用户可以下载的 SCM 系统。
  2. 我尝试在主函数中添加代码,例如

    _putenv("PATH = ....\lib\simulink");
    但这不起作用,因为在编译主文件之前,它需要从指定路径搜索dll,它没有。

任何人都可以提出一个简单的、可移植的修复程序,我可以通过 SCM 与项目文件一起分发给所有用户。

我也尝试了以下方法:
--创建批处理文件setpath.bat,内容如下

@ECHO %PATH%  set PATH = %PATH%;C:\Program Files\libsndfile\bin;C:\dev\lib\simulink 

--添加到A.vcxproj设置->构建事件->预构建->命令行

call  C:\setpath.bat

我没有在 vS op 窗口下看到添加的路径。 VS 用户文件也没有得到更改,并且运行项目抱怨缺少 dll 错误。
--我试图在
中执行批处理文件 A.vcxproj 设置-> 自定义构建步骤->在“运行”之前执行
还是没有结果。

我想解决方案需要在 VS 项目“运行”时将所需的路径添加到当前环境变量。

谢谢
赛迪

【问题讨论】:

  • 如果没有人同意这个 DLL 需要存储在哪里,那么这当然行不通。让你想知道这怎么能在用户的机器上达到一个好的结局。简单的解决方案是简单地将 C 项目添加到解决方案中。现在 DLL 会自动到达它所属的位置。
  • @HansPassant 这两个项目由于各种原因需要分开,否则我会按照你的建议做

标签: visual-studio visual-studio-2012


【解决方案1】:

添加到A.vcxproj设置->构建事件->预构建事件

call setdllpath.bat

文件包含以下内容:

@ECHO %PATH%
set COMSPEC = "%VCINSTALLDIR%\vcvarsall.bat" amd64
setx PATH "C:\Program Files\libsndfile\bin;..\..\lib\simulink" 
@ECHO %PATH%

所以,一旦我构建了项目,关闭 Visual Studio 并再次打开它,然后运行项目中的文件,它会正确获取 dll。

【讨论】:

    【解决方案2】:

    *.vcxproj.user*.vcxproj.user*.props 中的内容使用相同的 xml 架构,因此可以轻松交换或包含。

    首先,如果有用,您可以添加 UserMacros 来定义库的路径。 对于以下两个变量,如下所示

    PYTHONHOME=$(USERPROFILE)\AppData\Local\Programs\Python\Python37
    PYTHONPATH=$(PYTHONHOME)\DLLs;$(PYTHONHOME)\Lib;$(PYTHONHOME)\Lib\site-packages
    

    编辑.vcxproj&lt;Project&gt;内添加:

      <Project .... >
      ...
    
      <PropertyGroup Label="UserMacros">
      <PYTHONHOME>$(USERPROFILE)\AppData\Local\Programs\Python\Python37</PYTHONHOME>
      <PYTHONPATH>$(PYTHONHOME)\DLLs;$(PYTHONHOME)\Lib;$(PYTHONHOME)\Lib\site-packages;</PYTHONPATH>      </PropertyGroup>
    
      ...
      </Project>
    

    在你可以在你的构建配置里面添加之后,下面来设置$(Path)变量。

    <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
        <LocalDebuggerEnvironment>Path=$(Path);$(PYTHONHOME);$(PYTHONHOME)\DLLs;$(PYTHONHOME)\Lib;$(PYTHONHOME)\Lib\site-packages;$(PYTHONHOME)\Scripts;$(PYTHONHOME);</LocalDebuggerEnvironment>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-04
      • 2011-02-08
      相关资源
      最近更新 更多