当前位置: 首页 > news >正文

QtCreator调试运行工程报错,无法找到相关库的的解决方案

最新在使用国产化平台做qt应用开发时,总是遇到qtcreator内调试运行
找不到动态库的问题,为什么会出现这种问题呢?明明编译的时候能够正常通过,运行或者调试的时候找不到相关的库呢?先说结论,排除库本身的问题,归根结底,可能是我们的pro文件中,关于库链接的方式,不能够被qmake正常解析,或者使我们链接方式不规范,导致我们的库依赖路径无法正常添加到运行环境中(qtcreator 相关配置,正常情况下会把解析的依赖环境自动加入运行环境中),进而导致在点击运行或者调试时无法找到相关库。
比如说,我们可能为了方便添加相同前缀的库文件,使用以下方式链接

LIBS += -lopencv_*.so

这种方式在某些情况下是能够正常编译的,但是如果该类型库文件具有前后依赖关系,系统可能就报找不到XXXX库。

其次,发现以下方式也肯能导致库依赖路径无法被加入运行环境

LIBS += /home/icpc/my/my.so

因此,自己总结了一下链接库的方式,以opencv为例子,其库包目录如下

在这里插入图片描述
include是包含目录,lib是库目录。
在该库包根目录下,新建一个xxxx.pri文件,内容如下

#opencv 4.5.3 install path
OPENCV_INSTALL_PATH =  $$PWD/../opencv4.5.3#opencv 4.5.3 lib path
OPENCV_LIBS_PATH = $$OPENCV_INSTALL_PATH/lib#opencv 4.5.3 include path
OPENCV_INCLUDE_PATH = $$OPENCV_INSTALL_PATH/includeLIBS += -L$$OPENCV_LIBS_PATH -lopencv_aruco \-lopencv_barcode \-lopencv_bgsegm \-lopencv_bioinspired \-lopencv_ccalib \-lopencv_dnn_objdetect \-lopencv_dnn_superres \-lopencv_dpm \-lopencv_face \-lopencv_freetype \-lopencv_fuzzy \-lopencv_hfs \-lopencv_img_hash \-lopencv_intensity_transform \-lopencv_line_descriptor \-lopencv_mcc -lopencv_quality \-lopencv_rapid \-lopencv_reg \-lopencv_rgbd \-lopencv_saliency \-lopencv_stereo \-lopencv_stitching \-lopencv_structured_light \-lopencv_phase_unwrapping \-lopencv_superres \-lopencv_optflow \-lopencv_surface_matching \-lopencv_tracking \-lopencv_highgui \-lopencv_datasets \-lopencv_text \-lopencv_plot \-lopencv_videostab \-lopencv_videoio \-lopencv_wechat_qrcode \-lopencv_xfeatures2d \-lopencv_shape \-lopencv_ml \-lopencv_ximgproc \-lopencv_video \-lopencv_dnn \-lopencv_xobjdetect \-lopencv_objdetect \-lopencv_calib3d \-lopencv_imgcodecs \-lopencv_features2d \-lopencv_flann \-lopencv_xphoto \-lopencv_photo \-lopencv_imgproc \-lopencv_coreINCLUDEPATH += $$OPENCV_INCLUDE_PATH/opencv4 \$$OPENCV_INCLUDE_PATH/opencv4/opencv2

在需要调用opencv库的库或则应用的pro文件中,通过以下片段链接库

include(/path/youpath/opencv/xxxx.pri)

如果多个库都需要用该库,在相关库pro中添加以上片段即可,这样保证了链接库的一致性,避免了同一工程中的同一种库链接的是不同路径下的库。

此时,完成编译后,opencv相关的库应该就正常添加到运行环境中了,在qtcreator中运行或调试程序时,就不会出现相关找不到库的情况。

ps:部分库之间是有前后依赖关系的,加载顺序错误也有可能导致程序运行出错,pkg_config链接方式较好,但也需要写一下依赖路径。

相关文章:

QtCreator调试运行工程报错,无法找到相关库的的解决方案

最新在使用国产化平台做qt应用开发时,总是遇到qtcreator内调试运行 找不到动态库的问题,为什么会出现这种问题呢?明明编译的时候能够正常通过,运行或者调试的时候找不到相关的库呢?先说结论,排除库本身的问…...

【Python系列】Python 元组(Tuple)详解

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

特征融合篇 | YOLOv8 引入动态上采样模块 | 超过了其他上采样器

1. 介绍 本篇介绍了一种将动态上采样模块引入 YOLOv8 目标检测算法的新方法,该方法在 COCO 数据集上获得了 55.7% 的 mAP,超越了其他上采样器。该方法将动态上采样模块引入到 YOLOv8 的特征融合阶段,能够根据输入图像的特征分辨率动态调整上…...

​​​​​​​Beyond Compare 3密钥被撤销的解决办法

首先,BCompare3的链接如下 链接:https://pan.baidu.com/s/1vuSxY0cVQCt0-8CpFzUhvg 提取码:8888 --来自百度网盘超级会员V7的分享 1.问题现象 激活之后在使用过程中有时候会出现密钥被撤销的警告,而且该工具无法使用&#xff…...

知识见闻 - 人和动物的主要区别

人类和动物的主要区别之一确实在于理性,但这只是众多区别中的一个方面。以下是一些更全面的比较,突出人类和动物之间的主要区别: 理性和抽象思维: 人类:人类具有高度发展的理性能力,可以进行抽象思维、逻辑…...

Javaweb基础之工程路径

大家好,这里是教授.F 引入: 工程路径有一个知识点需要注意:就是相对路径。所谓相对路径就是依赖当前位置: 相对路径的定位依赖于当前位置或参考位置。 使用相对路径来解决, 一个非常重要的规则:页面所有的…...

国际荐酒师(香港)协会受邀出席广州意大利国庆晚宴

2024年5月30日,意大利驻广州总领事馆举办的2024年意大利国庆招待会及晚宴,庆祝意大利共和国成立。此次晚宴旨在促进中意两国之间的文化交流与合作。国际荐酒师(香港)协会受主办方邀请参与了这一重要活动。 国际荐酒师(…...

让驰骋BPM系统插上AI的翅膀

让驰骋BPM系统插上AI的翅膀 在当今日益复杂多变的商业环境中,业务流程管理(BPM)系统的应用愈发广泛,成为企业提高效率、优化流程、降低成本的重要工具。驰骋BPM系统凭借其出色的性能和丰富的功能,赢得了众多企业的青睐…...

排队论 | 基于排队机制实现智能仓储机器人巡逻及避碰

研究背景: 智能仓储机器人在现代物流行业中扮演着重要的角色,能够提高仓库的运作效率和准确性。然而,仓储机器人在巡逻过程中可能会遇到其他机器人或障碍物,这就需要解决排队和避碰问题,以确保安全和高效的运作。 研究路线: 背景调研:了解智能仓储机器人的发展和应用…...

Node.js和npm常用命令

一、Node.js简介 Node.js是一个免费、开源、跨平台的JavaScript运行时环境,允许开发人员创建服务器、web应用程序、命令行工具和脚本。 点击查看node.js中文官网 点击查看node.js英文官网 二、npm简介 npm(Node Package Manager)是Node.js的软件包管理器&#xff0…...

pytest +allure在测试中的应用

一、allure配置: 1、安装allure库 pip install allure-pytest2、代码中导入 import allure3、常用命令: 1)、 pytest --alluredir报告目录 测试脚本.py比如:pytest --alluredir./allure_report (未指定执行所有) 2&…...

004 CentOS 7.9 mongodb7.0.11安装及配置

https://www.mongodb.com/try/download/shell https://www.mongodb.com/try/download/community 文章目录 /etc/mongod.conf在 /etc/systemd/system/ 目录下创建一个名为 mongod.service 的文件重新加载 systemd 配置:启用服务:现在,可以手动…...

Docker安装Redis(云服务器)

准备: 在云服务器中开启6370端口号 docker run -d --name redis -p 6379:6379 redis 这条命令使用docker运行一个名为"redis"的容器,映射容器的6379端口到主机的6379端口,并且使用redis镜像来运行容器。REDIS是一个开源的内存数据…...

springboot中抽象类无法注入到ioc容器

1、背景 在写代码时,发现service接口有两个实现类,并且两个实现类中没有对类名重命名,属性注入的时候也没有使用byName或Qualifier,正确情况下会发生多实现报错的问题,以前对这个问题进行解析过。 2、调试过程 我想…...

Java关键字大冒险:深入浅出地理解Java的精髓

Java编程语言中的关键字就像是魔法咒语,每一个都有自己独特的作用。在这篇博客中,我们将探讨Java中最常见的关键字,并通过有趣的例子和形象的比喻,让你轻松掌握它们的用法。 1. public: 万能钥匙 public关键字是Java中的“万能钥…...

Android Kotlin 打开相册选择图片(多选)

1. 核心代码 打开系统相册功能,本代码使用两种方式打开本地相册,startActivityForResult 已经废弃,可以使用新的方式。 package com.example.facedetectordemoimport android.content.pm.PackageManager import androidx.appcompat.app.App…...

java学习路径

ProcessOn Mindmap...

[线程与网络] 网络编程与通信原理(四):深入理解传输层UDP与TCP协议

🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏:🍕 Collection与数据结构 (92平均质量分)https://blog.csdn.net/2301_80050796/category_12621348.html?spm1001.2014.3001.5482 🧀Java …...

IEEE编程语言排行榜:深度解析编程语言的四大维度、五大趋势、六大热门与七大挑战

IEEE编程语言排行榜:深度解析编程语言的四大维度、五大趋势、六大热门与七大挑战 在信息技术领域,编程语言排行榜一直是衡量各种编程语言流行度和影响力的重要指标。IEEE(电气电子工程师协会)作为全球最具影响力的科技专业组织之…...

【C++面试50题】

以下是针对C程序员面试可能遇到的一些问题,涵盖了从基础语法、面向对象、STL、内存管理、模板、异常处理、并发编程等多个方面。 ### 基础概念与语法 1. C与C的主要区别是什么? 2. 什么是构造函数和析构函数?它们何时被调用? 3. 什…...

RocketMQ延迟消息机制

两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数,对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后&#xf…...

在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:

在 HarmonyOS 应用开发中,手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力,既支持点击、长按、拖拽等基础单一手势的精细控制,也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档&#xff0c…...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序

一、开发准备 ​​环境搭建​​: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 ​​项目创建​​: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

如何在看板中有效管理突发紧急任务

在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...

数据链路层的主要功能是什么

数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...

Unit 1 深度强化学习简介

Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...

在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案

这个问题我看其他博主也写了,要么要会员、要么写的乱七八糟。这里我整理一下,把问题说清楚并且给出代码,拿去用就行,照着葫芦画瓢。 问题 在继承QWebEngineView后,重写mousePressEvent或event函数无法捕获鼠标按下事…...