【发布时间】: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”项目中
- 我无法将用户文件导出为“每个用户”,因此无法上传到其他用户可以下载的 SCM 系统。
-
我尝试在主函数中添加代码,例如
_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