DoubleLi

qq: 517712484 wx: ldbgliet

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  4737 随笔 :: 2 文章 :: 542 评论 :: 1615万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
Qt(MinGW ) Windows下创建动态库

Qt(MinGW ) Windows下创建动态库

 
1 人赞同了该文章

 

上一次和大家分享的是Linux下Qt创建共享库并链接共享库,这次和大家分享的是Windows下Qt创建共享库并链接共享库。大家肯定注意到标题中Qt后面括号中的minGW,为什么要加上minGW呢?先卖个关子,后面的介绍中会解释的。

 

在上一篇文章中【Linux下Qt创建共享库并链接共享】共享库的创建与链接都已经有了详细的步骤,所以本次文章中就不再赘述,主要说一下不同的地方。

 

  1. 创建共享库

 

  1. 工程文件.pro的修改
QT       -= core gui

TARGET = TestLib
TEMPLATE = lib

DESTDIR = $$PWD/dll

DEFINES += CREATEDLL_LIBRARY

SOURCES += testadd.cpp

HEADERS += testadd.h

unix {
    target.path = /usr/lib
    INSTALLS += target
}

 

与Linux下相比,去掉了版本号的设置,因为添加上不起作用。。相比Linux下,添加了DESTDIR = $$PWD/dll,这是目标目录,会把生成的文件放到该目录下。这里没有区分debug版本与release版本。

2. 生成共享库的效果

由于我们在pro中指定了生成路径,所以生成的文件都在dll文件中。这里面要注意的是,生成的有两个文件,一个是.a文件,在链接过程中使用,另一个是.dll文件,在运行过程中使用。

 

二、链接动态库

  1. 添加动态库

注意下这里面的库文件选择的是刚才生成的.a文件。默认勾选了为debug版本添加’d’作为后缀。

 

2. 编译、运行过程中的问题

①编译过程中出现的问题

../../../../i686-w64-mingw32/bin/ld.exe: cannot find -lTestLibd

什么情况?没有找到这个文件?再一看,后面多了一个d,默默地删掉解决问题。

因为刚才勾选了为debug版本添加’d’作为后缀。。

 

②运行直接崩溃

生成库的时候不还有一个文件么,这时候它就该起作用了。将它与.exe(可执行文件)放到同一目录下或者配置系统的环境变量都可以。

 

③结果如下

不知道大家能不能看出是Windows风格的?

 

 

 

后记总结:

①对比Linux与Windows,在运行时缺少库的情况下Linux会提示,Windows则没 有。不过掌握了动态库的使用方法后,这些都是可以规避的。

 

②之前看到别人链接库的后缀是.lib,难道是他错了?或者是我错了?可是我的能正常运行啊,但是我又看到的不止一个人链接的是.lib?于是我的求知欲再次被激起,查了下.a 、 .lib 、 .dll等的区别,最终发现是编译工具的不同所导致。

用mingw的会生成.a和.dll后缀的,他们用的是msvc,所以生成的是.lib和.dll。下面的图片是Qt的安装包,可以看到不同安装包所用的编译工具的不同。

所以这也是我为什么要在标题中加入MinGW的原因了。另外,使用MinGW的工程也可以直接链接.lib文件,这个就之后再了解了。

 

 

posted on   DoubleLi  阅读(99)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
历史上的今天:
2023-04-02 [.NET] ConfuserEx脱壳工具打包
2023-04-02 .Net零基础逆向教程 第三课(壳与作业)
2023-04-02 给大家推荐一个.Net的混淆防反编译工具ConfuserEx
2023-04-02 .net反编译的九款神器
2023-04-02 ConfuserEx 脱壳软件 使用教程
2023-04-02 开源.net 混淆器ConfuserEx介绍
2023-04-02 使用ConfuserEx加密混淆程序以及如何脱壳反编译
点击右上角即可分享
微信分享提示