所以继承我的问题......
我有我的application1,我通过QProcess启动另一个application2。 Application2依赖于Qt共享库,所以在启动QProcess之前,我将QProcess系统环境设置为Application1中的当前环境,其中我的LD_LIBRARY_PATH指向Qt共享库,如下面的代码所示:
void MyClass::setEnvironment()
{
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
m_process->setProcessEnvironment(env);
QStringList envList = m_process->systemEnvironment();
m_process->setWorkingDirectory(m_project->path());
}
之后我调用了一个QProcess :: start,其中我的exitStatus返回一个QProcess :: CrashExit。
我尝试调试application2但是在它进入main之前我得到了这个错误。在查看内核日志后,我遇到了这个错误:
Jul 23 09:30:40 centos7-gui kernel:application2 [23290]:segfault at 38 ip 00002b4916d67969 sp 00007fff1b2e7c30错误4 in libQt5Core.so.5.3.1 [2b4916c36000 + 510000]
再一次,我在设置之后检查了系统环境,并且LD_LIBRARY_PATH就是它所需要的。另外,如果我单独运行application2,而不是通过QProcess运行application1,它可以正常工作。
有没有人对这可能是什么或如何解决它有任何建议?这让我很伤心!