详解Qt添加外部库

在Qt项目中添加外部库是一项常见任务,无论是静态库还是动态库都需要正确的配置才能让项目顺利编译链接。以下是详细步骤和不同场景下的配置方法:

方法一:手动编辑.pro文件

  1. 添加头文件路径
    在Qt项目中的.pro文件中使用INCLUDEPATH变量指定外部库头文件的路径,以便编译器能找到对应的头文件。

    INCLUDEPATH += /path/to/external/library/include
    

    如果有多层目录,可以添加多个路径:

    INCLUDEPATH += /path/to/external/library1/include \/path/to/external/library2/include
    
  2. 添加库文件路径和链接库
    使用LIBS变量指定外部库文件的位置以及要链接的具体库名。 -L 指定库文件的路径, -l 后面跟的是不带前缀和后缀(通常是 .lib.a 对于静态库,.dll.so 对于动态库)的库名。

    win32:LIBS += -L/path/to/external/library/lib -lmylibrary
    unix:!macx: LIBS += -L/path/to/external/library/lib -lmylibrary
    macx: LIBS += -L/path/to/external/library/lib -lmylib.dylib
    

    如果是动态库且需要在运行时找到库,对于Windows,通常无需额外操作;但在Linux和MacOS上,可能需要将库路径添加到运行时环境变量 LD_LIBRARY_PATH 中。

  3. 考虑库依赖
    如果外部库还依赖其他的系统库,也需要将这些依赖库添加到LIBS中。

    LIBS += -L/path/to/system/libs -lsystemdependency
    

方法二:Qt Creator图形界面添加库

  1. 右键项目
    在Qt Creator中,右键点击项目,在弹出菜单中选择“添加库”(Add Library)。
    在这里插入图片描述

  2. 选择库类型
    在添加库对话框中,选择“外部库”(External Library),然后按照向导指示操作。
    在这里插入图片描述

  3. 指定库文件
    指定库文件的路径,可以选择库文件的绝对路径或相对路径。对于静态库,选择.a.lib文件;对于动态库,选择.dll.so.dylib文件。
    在这里插入图片描述

  4. 添加头文件路径
    如果Qt Creator允许,还可以在此过程中指定头文件路径,使其自动添加到INCLUDEPATH中。

  5. 确认添加
    完成向导后,Qt Creator会自动更新项目文件(.pro文件),添加相应的库路径和链接选项。
    最终同样的,在pro文件中自动添加代码

win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../../XXX/XXX/Module/common/dataHelper/lib/ -ldataHelper
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../../XXX/XXX/Module/common/dataHelper/lib/ -ldataHelperd
else:unix: LIBS += -L$$PWD/../../XXX/XXX/Module/common/dataHelper/lib/ -ldataHelperINCLUDEPATH += $$PWD/../../XXX/XXX/Module/common/dataHelper
DEPENDPATH += $$PWD/../../XXX/XXX/Module/common/dataHelper

注意事项

  • 动态库和静态库的链接方式有所不同,动态库在运行时需要可执行文件能找到,而静态库则是在编译时就链接到目标程序中。
  • 不同操作系统有不同的库命名规则和链接约定,比如Windows下的.lib文件可能是静态库或者动态库的导入库,而Linux下则是纯静态库或共享库(.so)。
  • 如果库有版本区别,确保链接的是项目所需版本。
  • 在多平台开发时,要注意库在不同平台上的兼容性和路径差异。

以上两种方法可以根据实际情况灵活选择,确保库正确链接和使用之后,项目就能顺利编译并通过对外部库功能的调用。

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

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

相关文章

小程序解析二维码:jsQR

1.了解jsQR jsQR是一个纯javascript脚本实现的二维码识别库&#xff0c;不仅可以在浏览器端使用&#xff0c;而且支持后端node.js环境。jsQR使用较为简单&#xff0c;有着不错的识别率。 2.效果图 3.二维码 4.下载jsqr包 npm i -d jsqr5.代码 <!-- index.wxml --> &l…

通讯录项目(用c语言实现)

一.什么是通讯录 通讯录是一种用于存储联系人信息的工具或应用程序。它是一种电子化的地址簿&#xff0c;用于记录和管理个人、机构或组织的联系方式&#xff0c;如姓名、电话号码、电子邮件地址和邮寄地址等。通讯录的目的是方便用户在需要时查找和联系他人。 通讯录通常以列…

AI预测体彩排3第1弹【2024年4月12日预测--第1套算法开始计算第1次测试】

前面经过多个模型几十次对福彩3D的预测&#xff0c;积累了一定的经验&#xff0c;摸索了一些稳定的规律&#xff0c;有很多彩友让我也出一下排列3的预测结果&#xff0c;我认为目前时机已成熟&#xff0c;且由于福彩3D和体彩排列3的玩法完全一样&#xff0c;我认为3D的规律和模…

Zookeeper的集群搭建和ZAB协议详解

Zookeeper的集群搭建 1&#xff09;zk集群中的角色 Zookeeper集群中的节点有三个角色&#xff1a; Leader&#xff1a;处理集群的所有事务请求&#xff0c;集群中只有一个LeaderFollwoer&#xff1a;只能处理读请求&#xff0c;参与Leader选举Observer&#xff1a;只能处理读…

vscode 连接远程服务器 服务器无法上网 离线配置 .vscode-server

离线配置 vscode 连接远程服务器 .vscode-server 1. .vscode-server下载 使用vscode连接远程服务器时会自动下载配置.vscode-server文件夹&#xff0c;如果远程服务器无法联网&#xff0c;则需要手动下载 1&#xff09;网址&#xff1a;https://update.code.visualstudio.com…

MVVM架构模式

目录 MVVM 数据绑定方式 实现方式 Model View ViewModel 数据绑定方式 vue&#xff1a;&#xff1a; 数据劫持和发布-订阅模式&#xff1a; Object.defineProperty() 方法来劫持&#xff08;监控&#xff09;各属性的 getter 、setter &#xff0c;并在数据&#xff08;对…

[大模型]Qwen1.5-4B-Chat WebDemo 部署

Qwen1.5-4B-Chat WebDemo 部署 Qwen1.5 介绍 Qwen1.5 是 Qwen2 的测试版&#xff0c;Qwen1.5 是基于 transformer 的 decoder-only 语言模型&#xff0c;已在大量数据上进行了预训练。与之前发布的 Qwen 相比&#xff0c;Qwen1.5 的改进包括 6 种模型大小&#xff0c;包括 0.…

【论文精读】 GPT,GPT-2,GPT-3:大力出奇迹

系列文章目录 【论文精读】Transformer&#xff1a;Attention Is All You Need 【论文精读】BERT&#xff1a;Pre-training of Deep Bidirectional Transformers for Language Understanding 文章目录 系列文章目录一、前言二、GPT&#xff08;一&#xff09;文章概览&#xf…

用Python编写GUI程序将JPEG文件按文件名顺序插入PDF文件

在Python编程中&#xff0c;处理文件和图像是常见的任务之一。最近&#xff0c;我遇到了一个有趣的问题&#xff1a;如何通过编写一个GUI程序来将一个文件夹中的JPEG文件按文件名顺序插入到一个新的PDF文件中&#xff1f;在这篇博客中&#xff0c;我将分享我使用Python、wxPyth…

智能工业电脑在智慧电力中实现全程实时监控与调控

可视化编程工业电脑在化工、石油、电力等行业过程控制领域扮演着越来越重要的角色。这些基于ARM架构设计的嵌入式工业计算机凭借其高性能、低功耗以及出色的实时处理能力&#xff0c;有效提升了各行业生产过程的安全性和效率。 钡铼技术ARMxy系列采用嵌入式Linux 系统开发的产品…

从零开始写 Docker(十)---实现 mydocker logs 查看容器日志

本文为从零开始写 Docker 系列第十篇&#xff0c;实现类似 docker logs 的功能&#xff0c;使得我们能够查查看容器日志。 完整代码见&#xff1a;https://github.com/lixd/mydocker 欢迎 Star 推荐阅读以下文章对 docker 基本实现有一个大致认识&#xff1a; 核心原理&#x…

Harmony鸿蒙南向外设驱动开发-Codec

功能简介 OpenHarmony Codec HDI&#xff08;Hardware Device Interface&#xff09;驱动框架基于OpenMax实现了视频硬件编解码驱动&#xff0c;提供Codec基础能力接口给上层媒体服务调用&#xff0c;包括获取组件编解码能力、创建组件、参数设置、数据的轮转和控制、以及销毁…

关于QEMU模拟器本身以及和CXL功能模拟相关内容的学习

前言&#xff1a;在写Paper的时候&#xff0c;发现直接引用QEMU官网关于QEMU的介绍实在是一个图省事儿的方法&#xff0c;但是并不可取。即使是一小段&#xff0c;也要去真正了解QEMU的基本原理&#xff0c;如何实现功能模拟&#xff0c;以及目前实现的与CXL相关的内容。 注&am…

Apache中间件漏洞

目录 什么是Apache Apache文件上传&#xff08;CVE-2017-15715&#xff09; Apache后缀解析 什么是Apache Apache(音译为阿帕奇)是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上&#xff0c;由于其跨平台和安全性被广泛使用&#xff0c;是最…

景芯2.5GHz A72训练营dummy添加(一)

景芯A72做完布局布线之后导出GDS&#xff0c;然后进行GDS merge&#xff0c;然后用Calibre对Layout添加Dummy。在28nm以及之前的工艺中&#xff0c;Dummy metal对Timing的影响不是很大&#xff0c;当然Star RC也提供了相应的解决方案&#xff0c;可以考虑Dummy metal来抽取RC。…

03-JAVA设计模式-享元模式

享元模式 什么是享元模式 享元模式&#xff08;Flyweight Pattern&#xff09;是一种对象结构型设计模式&#xff0c;用于减少创建对象的数量&#xff0c;以减少内存占用和提高系统性能。它通过共享已经存在的对象来避免创建大量相似的对象&#xff0c;从而降低内存消耗。 在…

韦东山freeRTOS第一天课程笔记

文章目录 一、课程目标二、堆和栈三、创建freertos任务 一、课程目标 双架构 ARM&#xff1a; 目前主流的架构&#xff0c;用得最广&#xff0c;芯片公司需要付费购买&#xff0c;再搭配各种模块才能设计出芯片。 RISC-V&#xff1a; 后起之秀&#xff0c;开源、免费。 双系统…

【考研数学】《660》+《880》高分搭配方法

&#x1f4dd;《660题》和《880题》高效刷题方法 1️⃣做题要有针对性&#xff0c;不要为了做题而做题 &#x1f4aa;660和880题虽然多&#xff0c;但是你不用全都做完&#xff0c;你可以把它当成是题源&#xff0c;里面的每一道题都很经典&#xff0c;如果搞懂一道&#xff…

练习6 beach beauty

文章目录 图片展示 图片展示

第十三章 OpenGL ES-RGB、HSV、HSL模型介绍

第十三章 OpenGL ES-RGB、HSV、HSL模型详细介绍 第一章 OpenGL ES 基础-屏幕、纹理、顶点坐标 第二章 OpenGL ES 基础-GLSL语法简单总结 第三章 OpenGL ES 基础-GLSL渲染纹理 第四章 OpenGL ES 基础-位移、缩放、旋转原理 第五章 OpenGL ES 基础-透视投影矩阵与正交投影矩阵…