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



我想在Ubuntu中使用QProcess通过Qt运行一个命令。我的命令是fluent3DMeshToFoam <mesh address>当我将它运行到终端时,它的OK并在特定位置产生总和输出和文件。但我在使用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

我找了很多遍都找不到问题出在哪里。谢谢

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

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

export LD_LIBRARY_PATH 
exec "./my_app"

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

相关内容

  • 没有找到相关文章

最新更新