qt-C++笔记之使用QProcess去执行一个可执行文件时指定动态库所存放的文件夹lib的路径
参考博文:
1.C++笔记之执行一个可执行文件时指定动态库所存放的文件夹lib的路径
2.Linux笔记之LD_LIBRARY_PATH详解
3.qt-C++笔记之使用QProcess去执行一个可执行文件时指定动态库所存放的文件夹lib的路径
code review!
文章目录
- qt-C++笔记之使用QProcess去执行一个可执行文件时指定动态库所存放的文件夹lib的路径
- Linux 示例
- Windows 示例
在Qt C++中,当你使用
QProcess
来启动一个可执行文件,并且需要指定动态库(如.so或.dll文件)所在的目录时,可以通过设置环境变量来实现。在Linux系统中,通常是设置
LD_LIBRARY_PATH
环境变量;在Windows系统中,则是设置
PATH
环境变量。
以下是一个如何使用QProcess
并设置环境变量的示例:
Linux 示例
#include <QProcess>
#include <QString>
#include <QStringList>
#include <QCoreApplication>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
// 创建一个 QProcess 实例
QProcess process;
// 设置环境变量,假设动态库在 /path/to/lib 目录下
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
env.insert("LD_LIBRARY_PATH", "/path/to/lib");
process.setProcessEnvironment(env);
// 启动外部程序,假设外部程序的名称是 myExternalApp
process.start("/path/to/myExternalApp");
// 等待程序启动
process.waitForStarted();
// ... 你的代码 ...
return a.exec();
}
Windows 示例
#include <QProcess>
#include <QString>
#include <QStringList>
#include <QCoreApplication>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
// 创建一个 QProcess 实例
QProcess process;
// 设置环境变量,假设动态库在 C:\path\to\lib 目录下
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
QString path = env.value("PATH");
path.prepend("C:\\path\\to\\lib;");
env.insert("PATH", path);
process.setProcessEnvironment(env);
// 启动外部程序,假设外部程序的名称是 myExternalApp.exe
process.start("C:\\path\\to\\myExternalApp.exe");
// 等待程序启动
process.waitForStarted();
// ... 你的代码 ...
return a.exec();
}
请注意,LD_LIBRARY_PATH
和PATH
环境变量的具体设置可能会根据你的系统环境和需求有所不同。上述代码只是一个基本的框架,可能需要根据实际情况进行调整。