0

所以我有一个 Qt 程序(“Main”),它(在其 Windows 版本中)在内部启动 cl(VS 编译器)。我可以通过以下三种方式之一启动 Main,其中两种方式,对 cl 的内部调用成功,第三种,可能是最重要的一种,它失败并出现“cl is unrecognized program ...”错误。cl 被调用system,在调用它之前,我遵循这个答案并运行vcvars32.bat,也被调用system

  1. Main 从 QtCreator 中启动。cl 在这种情况下成功启动。
  2. Main 从 Windows 命令行启动。cl 在这种情况下成功启动。
  3. Main 通过在 Explorer 中单击它来启动。 在这种情况下 cl 无法启动,再次在控制台中短暂闪烁“无法识别的程序”错误。

我猜有些环境要么继承自 QtCreator (1),要么在 Windows 命令行启动 (2) 时设置,但不是在您单击图标时设置。不过只是猜测。有人知道在(3)的情况下我可以做些什么来使事情正常进行吗?并且使用另一个编译器会增加不同的复杂性,所以我只想让它工作cl(以阻止对此的明显回复)。另外,我尝试使用 a 进行操作,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"

这在所有 1-3 中返回 0(成功)。对 cl 的调用是例如

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

这为 1-2 返回 0,在条件 3 中返回 1,即 ERROR_INVALID_FUNCTION。

4

0 回答 0