Qt 解决程序动态库必须和可执行文件放同一文件夹

简介: 文章目录Qt 解决程序动态库必须和可执行文件放同一文件夹1 背景2 使用场景描述2.1 添加动态库2.2 更改编译目录2.3 复制库文件到编译目录并运行程序2.4 复制库文件到程序根目录2.5 Release下测试3 实现动态库文件夹分类3.1 需求3.2 实现3.2.1 查看项目运行配置3.3 结果3.3 结果

Qt 解决程序动态库必须和可执行文件放同一文件夹


1 背景

最近项目开发需要调用多个外部的动态库,以前一般也就是调用一两个,无所谓,现在需要调用很多个,就想给多个动态库分分类,已方便以后项目的迭代 ,尝试了才发现,只能在同级目录才能调用。所以,决定研究研究。


2 使用场景描述

2.1 添加动态库

我习惯使用相对路径来调用动态库,如下

INCLUDEPATH += $$PWD/CANCore/X64
DEPENDPATH += $$PWD/CANCore/X64
unix|win32: LIBS += -L$$PWD/GECore/Lib/ -lrfm2gdll_stdc_64
INCLUDEPATH += $$PWD/GECore/Inc
DEPENDPATH += $$PWD/GECore/Inc

2.2 更改编译目录


我编译的时候,使用的Qt自带的“Shadow build“,目录也是自己定义的,如下

image.png

2.3 复制库文件到编译目录并运行程序


复制库文件到编译目录,运行,可以看到程序运行失败了,如下

image.png

2.4 复制库文件到程序根目录


如果把动态库文件复制到程序根目录,那么这里及可以运行了

image.png

运行程序,如下图

image.png

到这里大致问题应该就描述明白了,还有最后一个需要试一下,那就是Release以后的程序,是不是同样需要把动态库复制到程序更目录

2.5 Release下测试


下图是Release下的原始目录,这里我们还需要把我们的必要的Qt库文件搬过来,使用工具即可

image.png

执行如下指令,便可以吧Qt库搬运到我们的目录中,如下

image.png

尝试运行一下程序,如下,默认Qt的搬运能力是没法办搬运我们自己库的,需要自己手动搬运一下

image.png

把对应的GE库和CAN总线库搬运到程序目录,这是我们理想的目录结构如下图,现在尝试能否运行

image.png

运行结果如下,还是不可以,那么在试试吧库搬出来到与程序同级目录

image.png

结果证明,Release下还是同样,需要把库文件拷贝到统计目录在可以,那么别人的可以分类的文件夹是怎么做到的呢,我们来搞一下


image.png

3 实现动态库文件夹分类

3.1 需求

需求就是希望我们的库文件可以放在一个我们自定义的文件家中,程序调用,不用将所有的库文件都放在程序的同级目录。


3.2 实现

3.2.1 查看项目运行配置

如下图,通过查看项目运行设置,我们已经把库文件目录放到了程序的搜索目录了。但是为什么还是不可以呢。这里是看不错出啥新奇玩意了,还是找百度吧。

image.png



image.pngimage.png

目录
相关文章
|
3月前
【qt】如何读取文件并拆分信息?
【qt】如何读取文件并拆分信息?
33 0
|
4月前
|
C++
基于QT实现的拷贝文件以及实时进度条(简易版)
1.基于按钮或者菜单栏的槽里去写逻辑函数(我这边用的是菜单栏),ui实现的进度条 2.创建两个对象,一个是源文件,一个是目标文件分别用getopenfileName、getsavefileName函数即可。 3.利用QFile类去实现对两个文件的创建,因为QFile中可以获取文件的属性已经读写等。 4.循环的去读取源文件中的数据,然后写入目标文件
485 6
|
4月前
|
Linux iOS开发 开发者
Qt问题(二):无法定位程序输入点于动态链接库
动态链接库(Dynamic Link Library,简称DLL)是一种可执行文件格式,常见于Windows操作系统中,而在Linux和macOS等其他操作系统中,相似的概念通常被称为共享库(Shared Library)。动态链接库允许程序在运行时加载所需的代码和数据,而不是在编译时静态链接到应用程序中。这种方式带来了几个重要的优点:
454 3
|
2月前
|
C语言 Android开发 C++
基于MTuner软件进行qt的mingw编译程序的内存泄漏检测
本文介绍了使用MTuner软件进行Qt MinGW编译程序的内存泄漏检测的方法,提供了MTuner的下载链接和测试代码示例,并通过将Debug程序拖入MTuner来定位内存泄漏问题。
基于MTuner软件进行qt的mingw编译程序的内存泄漏检测
|
3月前
|
存储 算法 C++
【C++】C++ QT实现Huffman编码器与解码器(源码+课程论文+文件)【独一无二】
【C++】C++ QT实现Huffman编码器与解码器(源码+课程论文+文件)【独一无二】
|
3月前
【Qt 学习笔记】Qt窗口 | 标准对话框 | 文件对话框QFileDialog
【Qt 学习笔记】Qt窗口 | 标准对话框 | 文件对话框QFileDialog
692 4
|
3月前
|
XML 开发框架 API
【Qt 学习笔记】QWidget的windowTitle属性 | windowIcon属性 | qrc文件机制
【Qt 学习笔记】QWidget的windowTitle属性 | windowIcon属性 | qrc文件机制
155 1
|
3月前
QT 软件打包为一个单独可执行.exe文件流程
QT 软件打包为一个单独可执行.exe文件流程
700 0
|
3月前
|
安全 C++ Windows
Windows下C++使用gRPC(Qt和VS,含文件包和使用方法)
Windows下C++使用gRPC(Qt和VS,含文件包和使用方法)

推荐镜像

更多