从另一个.cpp文件的主体编译.cpp文件

时间:2011-10-02 01:29:15

标签: c++ visual-c++ compilation fatal-error

我一直致力于使用Microsoft Visual Studio 2010命令提示符编译原始.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),我收到一个错误:

  

致命错误C1043:iostream:没有包含路径集

我对批处理文件或使用命令提示符编译器不是很熟悉。我究竟做错了什么?!

此外,是否有不同的方法从应用程序内部进行编译?

谢谢!

2 个答案:

答案 0 :(得分:3)

每个system()调用都会调用一个单独的进程,因此一旦该进程结束,您在setupcppenv.bat文件中设置的任何环境变量都将被丢弃。

您应该做的是将.bat文件中设置的环境变量添加到系统环境中,或者至少添加到启动应用程序的cmd实例的环境中,以便继承它们由system()电话启动的流程。

答案 1 :(得分:1)

我不知道setupcppenv.bat中的内容我猜你正在对该批处理文件中的环境变量进行更改。当批处理脚本结束时,这些环境变量更改将被丢失,因为它们仅限于批处理脚本的进程以及该进程的任何子进程。

设置环境变量的方法是使用程序中的setenv()putenv()函数。