Запуск cl.exe изнутри программы работает только при определенных обстоятельствах

Итак, у меня есть программа Qt («Main»), которая (в своем воплощении Windows) внутренне запускает cl (компилятор VS). Я могу запустить Main одним из трех способов, и двумя из этих способов внутренний вызов cl завершается успешно, а третий, возможно, самый важный, завершается неудачно с ошибкой «cl is un Распознанная программа …». cl вызывается с systemи до звонка этот ответ и беги vcvars32.batтакже с system,

  1. Main запускается из QtCreator. cl успешно запускается в этом случае.
  2. Main запускается из командной строки Windows. cl успешно запускается в этом случае.
  3. Main запускается нажатием на него в проводнике. cl не запускается в этом случае, снова с «нераспознанной программой» в консоли кратковременно вспыхнула ошибка.

Я предполагаю, что есть какая-то среда, которая либо наследуется от QtCreator (1), либо настраивается при запуске командной строки Windows (2), но не при нажатии на значок. Просто предположение, хотя. Кто-нибудь знает, что я могу сделать, чтобы все работало в случае (3)? А использование другого компилятора добавляет разные сложности, поэтому я просто хотел бы заставить эту работу работать с cl (чтобы избежать одного очевидного ответа на это). Кроме того, я попытался сделать это с помощью QProcess но у меня была такая же проблема во всех 1-3.

Изменить: Вот вызов vcvars32.bat

    int setup_code = system(setup.c_str());
//Where setup is "C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\vcvars32.bat"

Это возвращает 0 (успех) во всех 1-3. В этом случае вызов cl, например,

   int code = system(cmd.c_str());
//Where cmd is "cl /O2 "test.cpp" /Fe"test.exe""

Это возвращает 0 для 1-2 и 1 в условии 3, то есть ERROR_INVALID_FUNCTION.

0

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]