我想在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
中的所有库