c++ - 在 Visual Studio 中使用 System() 在 Windows 中从源 C++ 文件编译 C++ 代码

标签 c++ windows visual-studio-2012 system

当我使用 VS2012 的开发人员命令提示符并键入

cl myProgram.cpp

编译成功, 但是,现在我想从 mySourceCode.cpp

中的源代码中编译同一个文件

使用

system("cl myProgram.c");

当我尝试时出现以下错误

fatal error c1034:proccess.h:未设置包含路径

我想知道是否有一种方法可以在不更改任何环境变量的情况下从源代码中修复此问题?

我的源代码看起来像这样:mySourceCode.cpp

#include <iostream>
#include ... 
int main()
{
  //set up code 
  ...

  system("cl myProgram.c");
}

我要编译的代码:myProgram.cpp

#include <proccess.h>
#include <windows.h> 
#include <stdio.h>
int main()
{
  //set up code 
  ...

  Sleep(10000);
}

最佳答案

When I use Developer Command Prompt for VS2012...It compiles successfully

这应该是给你的提示。看看“VS2012 的命令提示符”链接是什么 - %comspec%/k ""C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\vcvarsall.bat""amd64 即它启动vcvarsall.bat 文件。现在看看 .bat 在做什么 - 它使用参数和其他 .bat 文件来设置成功执行编译所需的一堆环境变量,例如包含路径,库路径和其他。

当您调用 system 时,大多数环境变量都没有在 system() 调用创建的进程中设置。如果你想从你的程序中执行编译,你有很多不同的方法。例如,创建您将启动的 .bat 文件,或使用 CreateProcess函数创建具有适当环境的进程

关于c++ - 在 Visual Studio 中使用 System() 在 Windows 中从源 C++ 文件编译 C++ 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38400195/

相关文章:

c++ - 将未使用的类数据成员存储在磁盘上

c++ - 如何在给定两点的情况下沿直线移动物体?

windows - %variable% 和 !variable! 之间的区别在批处理文件中

c++ - Visual C++ 静态初始值设定项异常行为

asp.net - 额外的文件夹附加到我在 AWS 上的 Web 根目录

c++ - 使用索引 for 循环遍历 Unordered_map

c++ - 如何根据基类对象中的变量值在派生类中分配变量?

java - 删除 C :\Windows\System32\{java, javaw,javaws}.exe 是否可以防止 Java 恶意软件?

c++ - VS 2012 MFC 对话框中缺少 WM_WINDOWPOSCHANGING

c - printf:没有为格式字符串传递足够的参数