2016-07-15 1 views
0

Когда я использую Developer Командная строка для VS2012 и типаCompile C++ код из исходного C++ файла в окнах с помощью системы() в Visual Studio

cl myProgram.cpp 

Он успешно компилируется, Однако, теперь я хочу, чтобы скомпилировать тот же файл из моего исходного кода в mySourceCode.cpp

использование

system("cl myProgram.c"); 

Когда я пытаюсь я получаю следующее сообщение об ошибке

фатального 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); 
} 
+0

Это может быть полезно. https://msdn.microsoft.com/en-us/library/fwkeyyhe.aspx – lcs

+0

Спасибо, это может быть хорошим началом. Я могу ошибаться, но я подозреваю, что когда я вызываю систему, VS2012 использует командную строку вместо командной строки Developer, которая имеет переменные среды, заданные с помощью «\ Program Files (x86) \ Microsoft Visual Studio 8 \ vc \ bin \ vcvars32 .летучая мышь." Не поняли, как смириться с этим, хотя – ShowLove

ответ

1

Когда я использую Developer Командная строка для VS2012 ... успешно компилируется

Это должно быть подсказкой для вас. Посмотрите, что означает «Командная строка для VS2012» - %comspec% /k ""C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\vcvarsall.bat"" amd64 i.e запускает файл vcvarsall.bat. Теперь посмотрим, что делает это .bat - он использует параметры и другие файлы .bat, чтобы установить набор переменных среды, необходимых для успешного выполнения компиляции, например, включить путь, путь к библиотеке и другие.

Когда вы вызываете system, большинство из этих переменных среды не установлены в процессе, созданном вызовом system(). Если вы хотите выполнить компиляцию из своей программы, у вас есть много разных способов. Например, создайте файл .bat, который вы запустите, или используйте функцию CreateProcess для создания процесса с соответствующей средой.

Смежные вопросы