Qt项目动态dll加载的所有问题

6 篇文章 0 订阅
文章介绍了动态DLL加载与静态加载的区别,强调动态加载只需DLL文件和函数接口符号表,而静态加载需lib、dll和头文件。在Qt项目中配置lib时,需在.pro文件中添加链接语句,并注意检查路径和库名。文章还提醒在封装技术中确保所有使用到的类都导出,以避免编译错误。最后提到了编译报错的检查点,包括lib路径、头文件包含和DLL的完整性和依赖性。
摘要由CSDN通过智能技术生成

动态dll加载的问题:(静三动二)
0-1: 静态加载,需要三样东西,lib和dll,还有头文件;三步骤:配置好lib,包含头文件,放置好dll位置。(头文件和依赖文件都不止一个必须全部拷贝过来)
0-2: 动态加载,只需要dll文件即可,另外一个函数接口的符号表(查看实际链接到函数接口的字符串),以Qlibrary的形式加载DLL和对应的接口。

踩坑小结:
(1)-小结封装技术:封装了两个类(或多个类)对外导出,再封装获取这两个类的唯一实例的方法,对外导出,这是第二层。这就是一个大的模块了。然后还可以把他们都放在同一个名字空间下。
(2)-动态链接库的加载:
多层封装的时候,除了检查外层接口是否导出,还得检查最里面的使用的类是否导出了。因为你最外层要接受的是类的对象的指针,所以这个类必须导出。

配置lib:
在 Qt 项目的 .pro 文件中添加如下链接语句:
LIBS += -L/path/to/libraw/lib -llibraw
其中,/path/to/libraw/lib 为库文件所在目录的绝对路径,libraw 为库文件的名称,注意不要添加文件扩展名“.lib”或“.a”。可以先在.pri文件中定义一个变量,如COMMON_LIBDIR代表共有路径,然后这样写:LIBS += -L$${COMMON_LIBDIR}/ -llibraw

编译报错检查:首先就是lib是否链接到正确的路径,然后就是检查头文件包含是否齐全,然后就是动态加载的dll以及依赖的dll是否齐全。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值