我一直在开发一个使用 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)时,出现错误:
fatal error C1043: iostream: no include path set
我对批处理文件或使用命令提示编译器不是很有经验。我究竟做错了什么?!
此外,是否有不同的方式从应用程序内部进行编译?
谢谢!
最佳答案
每个 system()
调用都会调用一个单独的进程,因此一旦该进程结束,您在 setupcppenv.bat
文件中设置的任何环境变量都将被丢弃。
您应该做的是将您在 .bat 文件中设置的环境变量添加到系统环境中,或者至少添加到您启动应用程序的 cmd 实例的环境中,以便它们被继承由 system()
调用启动的进程。
关于c++ - 从另一个 .cpp 文件的主体编译一个 .cpp 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7624064/