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