从程序内启动cl.exe仅适用于某些情况

时间:2014-05-27 00:03:43

标签: c++ windows qt system-calls cl

所以我有一个Qt程序(" Main")(在其Windows版本中)在内部启动cl(VS编译器)。我可以通过三种方式之一启动Main,并且在其中两种方式中,cl的内部调用成功,第三种,可能是最重要的一种,它失败了,&#c; cl是无法识别的程序......&# 39;错误。使用system调用cl,在调用之前,我会关注this answer并运行vcvars32.bat,同时使用system

  1. Main从QtCreator内部发布。 cl在这种情况下成功启动。
  2. Main从Windows命令行启动。 cl在这种情况下成功启动。
  3. 通过在资源管理器中单击它来启动Main。 cl在这种情况下无法启动,再次使用未识别的程序'错误在控制台中短暂闪现。
  4. 我猜有些环境要么继承自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"
    

    这在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。

0 个答案:

没有答案