使用VC ++编译生成的C ++代码

时间:2017-01-21 15:54:49

标签: c++ compiler-errors code-generation

我需要编写一个生成c ++代码,编译并运行它的程序,因此我完成了代码生成部分,并将其写入名为GeneratedCode.cpp的文件中。现在,我写在编译部分,我写道:

system(R"(call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat")");
system(R"(call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\vcvars32.bat")");
system("cl GeneratedCode.cpp");

首先,这是正确的方法吗?关于这个主题的信息很少,特别是对于VC ++。如果是,那么在使用IDE时我都会遇到问题。

使用IDE时,它会给我:" GeneratedCode.cpp(2):致命错误C1034:iostream:不包含路径设置"。我当然使用iostream标题。

直接运行exe时,它给了我:" ' CL'不被识别为内部或外部命令,可操作程序或批处理文件"。即使我打电话给vcvarsall.bat和vcvars32.bat。

1 个答案:

答案 0 :(得分:1)

每次调用system_wsystem都会创建一个新的环境,当呼叫终止时会丢失该环境。如果您的程序需要设置环境变量,如Visual C ++命令提示符LIBINCLUDE等,那么多次调用system将无法成功。

以下是您的选择,按照我推荐的顺序:

  1. 一起避开system。为cl.exe设置所需的环境块,使其与字符串连接功能一起正常工作,如here所示,并使用该环境调用CreateProcess
  2. 让您的程序编写一个批处理文件,其中包含cl.exe正常工作的所有先决条件命令,在其上调用system,然后删除批处理文件。
  3. 将命令与&&连在一起,并使用大量多个命令调用system一次。