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

标签 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)时,出现错误:

fatal error C1043: iostream: no include path set

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

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

谢谢!

最佳答案

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

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

关于c++ - 从另一个 .cpp 文件的主体编译一个 .cpp 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7624064/

相关文章:

c++ - 在 MSVC 2017 中检测警告

c++ - 将 GUI 添加到非托管/boost C++ 应用程序

c++ - 在 Windows 中更改原始波形数据的音高

c++ - 第一个 CppUnit 测试:对 CppUnit::SourceLine::SourceLine 的 undefined reference

c++ - 是否可以在 C++ 中使用 "this"在成员函数中创建本地对象?

c++ - OpenGL 纹理缓冲区 - GLSL 语法

c++ - 将(手动)从 uint32_t 转换为 4 个字符

c++ - 意外的字符串流行为

scala - 为 NetBeans 设置 Scala - 错误

android - 错误 :undefined reference to 'pthread_testcancel' when compile with NDK