【问题标题】:Compiling a .cpp file from the body of another .cpp file从另一个 .cpp 文件的主体编译 .cpp 文件
【发布时间】:2011-10-02 01:29:14
【问题描述】:

我一直在开发一个使用 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:没有包含路径集

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

另外,有没有从应用程序内部编译的不同方法?

谢谢!

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      我不知道setupcppenv.bat 中的内容是什么,我猜您正在更改该批处理文件中的环境变量。发生的情况是,当批处理脚本结束时,这些环境变量更改会丢失,因为它们仅限于批处理脚本的进程和该进程的任何子进程。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-02-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多