插入 PATH 时,终端中的命令 运行 但不在 QProcess 中

Command run in terminal but not in QProcess while PATHs are inserted

我想使用 QProcess 通过 Qt 运行 Ubuntu 中的命令。 我的命令是 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

我找了很多都没有找到问题所在。 谢谢。

经过 a-lot 次搜索,最后我 found-out 发现 LD_LIBRARY_PATH 有一个 Qt 没有考虑到的问题。

在不使用 setProcessEnvironment(...) 的情况下,我打开终端 export 运行 之前的 LD_LIBRARY_PATH,如下所示:

export LD_LIBRARY_PATH 
exec "./my_app"

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