一般大型项目中, 会将实现特定功能的函数或类, 封装成链接库, 供应用程序代码调用. 下面我将一步步教你如何在qt 中创建动态库, 并使用它.
创建多子目录项目
-
首先创建一个多子目录项目(即含有多个项目的工程, 类似于VS中的解决方案)
– 输入项目名称, 选择创建路径. 比如”demo”.
- 选择编译工具, 这里MSVC, MinGW 均可.
– 完成&添加子项目.
创建动态链接库
-
选择 “Library” | “C++ Library”.
– 输入库的名称.
– 选择 “qmake”.
– 类型设置为共享库, “Qt module”根据库的功能设置为Core, Widget, 或其他.
– 编译工具选择, 所有的子项目均选择相同的编译工具.
– 完成即可.
编辑链接库内容
-
打开 “mydll.pro”, 添加内容:
DESTDIR = ../
(指定目标文件的输出位置)
-
“mydll.h”的类声明中添加函数声明.
-
在”mydll.cpp”中添加函数的定义.
创建应用工程并连接动态链接库
-
在顶层项目”demo”上右键选择 添加新子项目.
-
选择: “Application(Qt)” -> “Qt Widgets Application”
– 输入子项目名称, 比如:“app”
-
选择构建系统为:“qmake”
选择编译工具, 所有的子项目均选择相同的编译工具.
– 完成.
– 打开”app.pro”, 添加内容:
LIBS += ../mydll.lib
DESTDIR = ../
LIBS
指定要链接的库名称, 因为在”mydll.pro”中指定了目标文件路径为”…/“, 所以, 库名称为”…/mydll.lib”
-
编辑”mainwindow.cpp”, 添加如下内容, 调用动态链接库中的函数.
- 构建项目.
- 如果能够构建成功, 动态库的创建和使用应该是没问题的.
- 接下来, 运行我们的工程. 在应用程序输出窗口, 可以看到打印信息.
注意:
修改
DESTDIR
很重要, 将所有链接库的和应用程序输出的目标文件都指定到”…/”, 这样运行应用程序时就不会出现找不到动态链接库的情况.
版权声明:本文为falwat原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。