我一直致力于使用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:没有包含路径集
我对批处理文件或使用命令提示符编译器不是很熟悉。我究竟做错了什么?!
此外,是否有不同的方法从应用程序内部进行编译?
谢谢!
答案 0 :(得分:3)
每个system()
调用都会调用一个单独的进程,因此一旦该进程结束,您在setupcppenv.bat
文件中设置的任何环境变量都将被丢弃。
您应该做的是将.bat文件中设置的环境变量添加到系统环境中,或者至少添加到启动应用程序的cmd实例的环境中,以便继承它们由system()
电话启动的流程。
答案 1 :(得分:1)
我不知道setupcppenv.bat
中的内容我猜你正在对该批处理文件中的环境变量进行更改。当批处理脚本结束时,这些环境变量更改将被丢失,因为它们仅限于批处理脚本的进程以及该进程的任何子进程。
设置环境变量的方法是使用程序中的setenv()
或putenv()
函数。