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

举报
DreamLife 发表于 2022/04/15 22:52:37 2022/04/15
2k+ 0 0
【摘要】 欢迎来到我的博客,希望这篇文章对你有所帮助,如果觉得不错,请点赞搜藏哈。 文章目录 Qt 解决程序动态库必须和可执行文件放同一文件夹1 背景2 使用场景描述2.1 添加动态库2.2 更改编译...

titlle bar

欢迎来到我的博客,希望这篇文章对你有所帮助,如果觉得不错,请点赞搜藏哈。

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-20210330105649419

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

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

image-20210330105853673

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

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

image-20210330110412345

运行程序,如下图

image-20210330110514726

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

2.5 Release下测试

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

image-20210330111216739

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

dsdsa

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

image-20210330111627304

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

image-20210330111734590

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

image-20210330111917125

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

image-20210330112129088

3 实现动态库文件夹分类

3.1 需求

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

3.2 实现

3.2.1 查看项目运行配置

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

image-20210330113506181

3.3 结果

看到这里,一定是看了个寂寞,没有搞定,还是老实根目录开搞吧,在折腾没有时间和美工妹子聊人身了。留坑20221年3月30日


7087865001)]

3.3 结果

看到这里,一定是看了个寂寞,没有搞定,还是老实根目录开搞吧,在折腾没有时间和美工妹子聊人身了。留坑20221年3月30日


博客签名2021

文章来源: dreamlife.blog.csdn.net,作者:DreamLife.,版权归原作者所有,如需转载,请联系作者。

原文链接:dreamlife.blog.csdn.net/article/details/115326053

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。