1

我想使用 QProcess 在 Ubuntu 中通过 Qt 运行命令。我的命令是fluent3DMeshToFoam <mesh address> ,当我将它运行到终端时,它就可以了,并在特定位置产生总和输出和文件。但是我在使用 QProcess 运行它时遇到问题。

我注意到我应该添加fluent3DMeshToFoam到我的 QProcess 对象的 ProcessEnvironment 的路径。所以我做了:

QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
env.insert("PATH" , "<path of fluent3DMeshToFoam>");
myProcess.setProcessEnvironment(env);
myProcess.start("fluent3DMeshToFoam" , QStringList() << "<mesh address>");
myProcess.waitForFinished(-1);

我连接readyRead()errorOccurred()发出信号,运行后,errorOccurred信号发出并显示以下错误:

execve: No such file or directory

我搜索了很多,找不到问题出在哪里。谢谢。

4

1 回答 1

2

经过大量搜索,我终于发现有一个问题LD_LIBRARY_PATH没有被Qt考虑。

在没有任何使用的情况下setProcessEnvironment(...),我打开终端并exportLD_LIBRARY_PATH运行它之前打开它,如下所示:

export LD_LIBRARY_PATH 
exec "./my_app"

然后 my_app 知道存储的所有库LD_LIBRARY_PATH

于 2020-08-29T17:47:32.963 回答