QProcess无法执行外部可执行文件

我正在努力寻找解决我的问题,但我根本不知道如何解决它。

我为我制作的一些程序创build了一个用户界面(所以你可以通过简单地按下button启动一个可执行文件)。 所以我想用qt

所以我读了很多关于QProcess并试图使用它。

在我的第一个可执行文件中,我尝试通过QProcess :: start()启动它,但是它没有工作,所以我用QProcess尝试了它:execute():

QProcess *proc = new QProcess(this); QDir::setCurrent("C:\\DIRTOTHEEXE\\"); QString program="HELLO.exe"; proc->execute(program); 

这完美地执行我的程序,工作很好。

所以我试图做我的其他EXE,但它没有奏效

 QProcess *myproc = new QProcess(this); QDir::setCurrent("C:\\DIRTOTHEEXE\\"); QString program="HelloWorld.exe"; myproc->start(program); 

被调用的可执行文件只是打印“Hello World”,然后返回0。

所以现在我的问题是:什么会导致这种行为,为什么我不能使用QProcess :: start()为第一个可执行文件?

顺便说一句:我也试图将工作目录()设置为exe的path,但也没有工作。

希望可以有人帮帮我。

编辑:所以该程序被执行,但打印出一行后崩溃。

编辑:这里的HelloWorld源。

 #include <iostream> using namespace std; int main(int argc, char* argv[]) { cout<<"HELLO WORLD!!"<<endl; return 0; } 

QProcess有3个启动外部进程的功能,例如: –

  • 开始
  • 执行
  • startDetached

后两者,execute和startDetached都是静态的,所以不需要QProcess的一个实例来调用它们。

如果你使用start,你至少应该调用waitForStarted()来让进程正确设置。 execute()函数将等待进程完成,因此不需要调用waitForStarted。

由于您只发布了少量代码,因此我们无法完全看到您之后要做的事情。 该代码是在一个函数结束,还是你试图检索过程的输出? 如果是这样,你肯定应该调用waitForStarted如果使用start()。

如果你只想运行这个进程,而不用等待它完成,你的程序不会被打扰与进程交互,那么使用startDetached: –

 QProcess::startDetached("C:\\DIRTOTHEEXE\\HELLO.exe");