提示:Qt版本为Qt5.9.6
一、创建动态链接库
- 单击“文件”后,单击“新建文件项目”菜单项。
- 选择“Library”后选择“C++库”,然后点击“选择”。
- 类型选择“共享库”,名称自定义,路径自己选择,完成以上后点击“下一步”。
- 这里编译工具我选择默认,点击“下一步”。Qt MinGW与MSVC对比
- 默认选择“QtCore”模块,然后点击“下一步”。
- 类名默认会和DLL的名称一致,可自行修改,点击“下一步”。
- 版本控制系统默认是“None”,这里有“Git”项是我电脑上安装了Git,点击“完成”。
- 点击最左侧“项目”项,在“编译构建配置”处把相应的“Shadow build”勾去掉,这样构建目录会生成在当前DLL的目录下。
- 创建完成后会自动生成以下文件。
一个共享库导出给用户使用的类,符号,函数等都需要用宏 Q_DECL_EXPORT 来定义导出,一个使用共享库的应用程序需要通过 Q_DECL_IMPORT 导入共享库的可用对象。
- 自行添加接口,这里我接口添加如下,编译工具使用MINGW 32bit,release模式下进行编译。
1:若使用MSVC编译,编译后会生成“库名称.dll”和“库名称.lib”两个文件,“库名称.dll”在运行应用程序时调用,“库名称.lib”在应用程序隐式调用DLL时使用。
2:若使用MinGW编译,编译后会生成“库名称.dll”和“lib+库名称.a”两个文件,“库名称.dll”在运行应用程序时调用,“lib+库名称.a”在应用程序隐式调用DLL时使用
- 按“ctrl+r”键后出现如下图,恭喜你,一个简单的DLL创建成功了。
二、调用动态链接库
调用方式一(推荐使用)
- 新建一个项目后,在项目所在目录下新建一个 lib 目录,将上述生成的库和头文件添加到 lib 目录下,如下图。
- 回到QtCreator创建的项目中,点击最右侧的项目一栏,然后在构建设置下去掉 “Shadow build” 的勾选项,让exe生成到当前项目的路径下。
- 在 “项目名称.pro” 文件中,指定库路径(注意在LIBS一行,记得在库名称“Calculator”前加-l)
调用方式二
- 新建一个项目,右击项目名称后,选择“添加库”项。
- 勾选“外部库”,点击“下一步”。
- 库文件选择“浏览”,找到你创建的动态链接库位置。
这里为我的DLL文件位置,仅供参考 - 点击“完成”。
- 点击“项目名称.pro”文件,会自动添加如下内容。
- 添加库里的头文件,右击项目“执行qmake”和“构建”,“ctrl+r”运行项目后,会出现如下错误。
解决:在“项目名称.pro”文件里,按如下图操作,因为包含的头文件不在release目录下。
- 测试上面的动态链接库操作如下视频所示,仅供参考哈。