2011-10-02 80 views
0

我一直在使用Microsoft Visual Studio 2010命令提示符編譯原始.cpp文件並分析它們的輸出的應用程序。我遇到了很多麻煩,網上似乎沒有太多材料。這裏的麻煩代碼:從另一個.cpp文件的主體編譯.cpp文件

#include <iostream> 
using namespace std; 
... 
string name = "cl /EHsc "; 
name += "example.cpp"; 
system("setupcppenv.bat"); // A short batch file I wrote to launch the VC++ cmd prompt without launching another instance of cmd 
system(name.c_str()); 

當我執行(它試圖編譯example.cpp),我得到一個錯誤:

fatal error C1043: iostream: no include path set

我不是很有經驗的批處理文件,或者使用命令提示編譯器。我究竟做錯了什麼?!

此外,是否有不同的方式來從應用程序內部編譯?

謝謝!

回答

1

我不知道setupcppenv.bat什麼是我猜你正在更改該批處理文件中的環境變量。會發生什麼情況是,當批處理腳本結束時,這些環境變量更改正在丟失,因爲它們僅限於批處理腳本的進程以及該進程的任何子進程。

設置可行的環境變量的一種方法是在程序中使用setenv()putenv()函數。

3

每個system()調用會調用一個單獨的進程,因此您在setupcppenv.bat文件中設置的任何環境變量將在該進程結束後被丟棄。

你應該做的是將您在.bat文件中設置的環境變量添加到系統環境中,或者至少添加到啓動應用程序的cmd實例環境中,以便它們是由system()調用啓動的進程繼承。