加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

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

发布时间:2020-12-14 03:53:43 所属栏目:Windows 来源:网络整理
导读:我正在努力找到解决问题的方法,但我根本不知道如何解决它. 我正在为我制作的一些程序创建一个用户界面(所以你可以通过简单地按一个按钮启动一个可执行文件). 所以我想到了使用qt. 所以我读了很多关于QProcess的内容并尝试使用它. 在我的第一个可执行文件中,
我正在努力找到解决问题的方法,但我根本不知道如何解决它.

我正在为我制作的一些程序创建一个用户界面(所以你可以通过简单地按一个按钮启动一个可执行文件).
所以我想到了使用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()作为第一个可执行文件?

顺便说一句:我也尝试将workingDirectory()设置为exe的路径,但也没有用.

希望可以有人帮帮我.

编辑:
因此程序执行但在打印出一行后立即崩溃.

编辑:这里是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.

由于您只发布了少量代码,我们无法确切地看到您之后要做的事情.函数中的代码是否结束,或者您是否正在尝试检索进程的输出?如果是这样,如果使用start(),你肯定应该调用waitForStarted.

如果您只想在不等待它完成的情况下运行该过程,并且您的程序不打算与该过程进行交互,那么请使用startDetached: –

QProcess::startDetached("C:DIRTOTHEEXEHELLO.exe");

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读