qt-C++笔记之使用QProcess去执行一个可执行文件时指定动态库所存放的文件夹lib的路径

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);// 启动外部程序,假设外部程序的名称是 myExternalAppprocess.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.exeprocess.start("C:\\path\\to\\myExternalApp.exe");// 等待程序启动process.waitForStarted();// ... 你的代码 ...return a.exec();
}

请注意,LD_LIBRARY_PATHPATH环境变量的具体设置可能会根据你的系统环境和需求有所不同。上述代码只是一个基本的框架,可能需要根据实际情况进行调整。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/704168.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C# EF Core迁移数据库

现象&#xff1a; 在CodeFirst时&#xff0c;先写字段与表&#xff0c;创建数据库后&#xff0c;再添加内容 但字段与表会变更&#xff0c;比如改名删除增加等 需求&#xff1a; 当表字段变更时&#xff0c;同时变更数据库&#xff0c;执行数据库迁移 核心命令 Add-Migrat…

保险防忽悠指南

保险如何防忽悠&#xff1f; 1.只买消费型保险&#xff0c;不要买返还型保险。许多人买保险被忽悠&#xff0c;就是因为买了返还型保险。返还型保险保费贵&#xff0c;保额低&#xff0c;收益又低。消费型保险保费便宜&#xff0c;保额高&#xff0c;杠杆高。 圣经有云:上帝的…

什么是SSH端口转发?

目录 前言&#xff1a; 一、SSH端口转发的概念 二、SSH端口转发的类型 2.1 本地端口转发 2.2 远程端口转发 2.3 动态端口转发 三、SSH端口转发的用途 3.1 安全远程访问 3.2 跨越网络限制 3.3 加密流量传输 3.4 跨越 NAT 网络 3.5 安全代理 四、总结 前言&#xff…

函数重载 C++

在同一作用域中声明几个功能类似的同名函数&#xff0c;这些函数的形参列表不同&#xff08;个数或类型&#xff09; #include<iostream> using namespace std; // 1、参数类型不同 int Add(int left, int right) {cout << "int Add(int left, int right)&qu…

Spring Bean

Spring的配置方式 1、xml配置文件 2、基于注解的方式 3、基于Java的方式 Spring Bean的生命周期 1、通过构造器或工厂方法创建bean实例 2、为bean的属性赋值 3、调用bean的初始化方法 4、使用bean 5、当容器关闭时&#xff0c;调用bean的销毁方法 Spring inner beans …

【es6 】中的装饰器 decorator 到底是什么,有什么用,和ts 中的装饰器decorator有啥区别

es6 中的装饰器 decorator 再 es6 中新增了 3个器&#xff0c;分别是 迭代器、生成器、还有就是装饰器&#xff0c;关于迭代器和生成器可以参考这篇文章。​​​​ 装饰器实际上是 es7 提出来的&#xff0c;它允许你在类、类方法、类属性等声明前面添加特殊的修饰符&#xff…

octave 与 matlab

octave 与 matlab 联系与区别 Octave 和 Matlab 是两种数字计算和科学编程语言。它们之间有很多联系和区别。 联系&#xff1a; Octave 和 Matlab 都是为了进行数值计算和科学编程而设计的&#xff0c;它们都具有很强的数值计算和矩阵操作的能力。Octave 和 Matlab 都支持向量…

Spring中@Transactional注解的方法在不同Bean调用时的事务生效性

在Spring框架中&#xff0c;Transactional注解用于声明一个方法或类需要事务管理。当一个方法被Transactional注解标记时&#xff0c;Spring会为该方法的执行创建一个新的事务&#xff08;如果当前没有事务存在的话&#xff09;&#xff0c;或者在现有事务的上下文中运行&#…

记录 | docker内修改host方法

方法一&#xff1a; 直接进入容器中修改/etc/hosts 缺点&#xff1a;重启容器后&#xff0c;增加的内容会丢失 方法二&#xff1a; 制作镜像的时候&#xff0c;直接修改。 限制&#xff1a; 需要是root用户&#xff0c;需要在容器中安装sudo 增大了镜像大小 方法三&…

LeetCode 3019.按键变更的次数

给你一个下标从 0 开始的字符串 s &#xff0c;该字符串由用户输入。按键变更的定义是&#xff1a;使用与上次使用的按键不同的键。例如 s “ab” 表示按键变更一次&#xff0c;而 s “bBBb” 不存在按键变更。 返回用户输入过程中按键变更的次数。 注意&#xff1a;shift …

如何在安卓手机与电脑上写文章直接发布至自己的hexo静态博客网站上

#需求 1.当有了自己的hexo博客之后,就想随时随地在不同的设备之间写文章&#xff0c;并发布到自己的博客上。 #过程 2.突然有一天逛到别人的博客上&#xff0c;看到别人写了一篇文章&#xff0c;是用小书匠&#xff0c;能实现不同的设备写文章并发送至自己的静态网站。 #实现 3…

Java最新面试宝典 Spring面试题

Java最新面试宝典 Spring面试题 前言1、Spring是什么&#xff1f;2、Spring 的优点&#xff1f;3、什么是IOC&#xff1f;4、什么是 AOP&#xff1f;5、AOP 有哪些实现方式&#xff1f;6、什么是DI依赖注入&#xff1f;7、将一个类声明为Spring的 bean 的注解有哪些&#xff1f…

推荐收藏!商汤智能座舱算法岗面试题7道(含解析)!

节前&#xff0c;我们组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂同学、参加社招和校招面试的同学&#xff0c;针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 今天我整…

vue3.0 ref的使用

一.在vue2中定义变量 在使用vue2的时候,我们定义变量会在data中进行定义&#xff0c;那么我们在vue3中是如何定义变量的呢&#xff1f;我们会使用ref来进行定义。 (1)我们通过一个简单的案例来看 代码&#xff1a; <template> <div><button click"coun…

支持向量机|机器学习方法(李航)

支持向量机&#xff0c;可以看着是升级版的感知机&#xff0c;与感知机相比。他们都是找到一个超平面对数据集进行分割&#xff0c;区别在于&#xff0c;感知机模型得到的超平面空间中可以有无穷个超平面&#xff0c;但支持向量机仅含有一个&#xff0c;这一个超平面与样本点的…

Syslog日志采集

Syslog日志采集 1、Linux rsyslog服务1.1、安装rsyslog1.2、配置客户端1.3、配置服务端 2、Filebeat 服务端2.1、安装Filebeat2.2、配置Filebeat 3、Java程序服务端3.1、服务端代码 Syslog日志采集需要syslog客户端和syslog服务端&#xff0c;客户端负责发送日志、服务端负责采…

matplotlib plt.show()却弹出空白框并之后自动退出程序的原因及解决方法

运行下列代码并使用plt.show()进行展示时候&#xff0c;cmd输出如下&#xff1a; 先弹出空白框&#xff1a; 而后直接退出程序&#xff1a; 之前遇到过很多次&#xff0c;由于不输出Traceback&#xff0c;完全不知道什么原因。结果发现是因为没有导入torch导致的。 解决办法就…

C++面试 -操作系统-安全能力:内存溢出、内存泄漏的原因与解决

目录 内存溢出&#xff08;Memory Overflow&#xff09; 内存溢出介绍 解决内存溢出问题的方法 内存泄漏&#xff08;Memory Leak&#xff09; 内存泄露基础 解决内存泄漏问题的方法 内存溢出&#xff08;Memory Overflow&#xff09; 内存溢出介绍 内存溢出是指程序在执…

人工智能在测绘行业的应用与挑战

目录 一、背景 二、AI在测绘行业的应用方向 1. 自动化特征提取 2. 数据处理与分析 3. 无人机测绘 4. 智能导航与路径规划 5. 三维建模与可视化 6. 地理信息系统&#xff08;GIS&#xff09;智能化 三、发展前景 1. 技术融合 2. 精准测绘 3. 智慧城市建设 4. 可…

配置QINQ

1.实验环境&#xff1a; 某运营商接了公司A和公司B的网络&#xff0c;现需要使用qinq技术实现公司A、公司B的私有网络能够使用运营商网络互通。公司A使用灵活的qinq让内部网络的vlan 10映射为公网vlan2进行数据转发&#xff0c;vlan20映射为vlan3进行数据转发。公司B使用基本的…