我發現之前發佈了類似的問題,但我需要稍微不同的解決方案。
我有VS2012 C++項目A.vcxproj,它具有debug1配置(平臺x64),並且它生成相應的.exe。它還使用來自必須添加到環境變量的路徑的其他VS2012 C項目B.vcxproj的dll。 A.vcxproj.user文件中有如下文字在Visual Studio C++項目中設置環境變量
<LocalDebuggerEnvironment>PATH=%PATH%;C:\Program Files\libsndfile\bin;..\..\lib\simulink\;$(LocalDebuggerEnvironment) </LocalDebuggerEnvironment>
我需要自動添加此設置了「A」的項目有以下限制
- 我不能用戶文件導出爲它「每個用戶」 ,所以不能上傳到我們的SCM系統,其他用戶可以下載它。
我試圖在主要功能附加代碼,像
_putenv( 「PATH = .... \ lib中\ Simulink的」);
但這不起作用,因爲在編譯主文件之前,它需要從指定的路徑搜索dll,而不管它。
任何人都可以提出一個簡單的,便攜式的修補程序,我可以通過SCM分發給所有用戶以及項目文件。
我也曾嘗試以下操作:
--Created批處理文件setpath.bat與以下內容
@ECHO %PATH% set PATH = %PATH%;C:\Program Files\libsndfile\bin;C:\dev\lib\simulink
- 加入A.vcxproj設置 - >建事件 - >預建設 - >命令line
call C:\setpath.bat
我在vS op窗口下看不到添加的路徑。 VS用戶文件也沒有得到改變,並且運行項目抱怨缺少DLL錯誤。
- 我試圖
A.vcxproj設置 - >自定義 執行批處理文件建立步驟 - >「運行」
,仍然沒有結果之前執行。
我想解決方案需要添加所需的路徑到當前的環境變量VS項目是「運行」的時間。
感謝
sedy
如果沒有人可以同意這個DLL需要存儲在哪裏,那麼這當然不能工作。讓你想知道如何在用戶的機器上實現良好的效果。簡單的解決方案是簡單地將C項目添加到解決方案。現在,DLL自動結束於它所屬的位置。 –
@HansPassant這2個項目由於各種原因需要分開,否則我會按照您的建議完成 – user915783