2011-10-02 79 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()调用启动的进程继承。