创建动态库工程
选择模块需要注意的是如果想要将GUI封装成一个动态库,那么必须要要将QtWidgets选中,不然是不能生成ui_xxx.h头文件的
接下来直接都下一步直到创建好就好
创建好之后会有两个头文件,一个.cpp文件
Global.h头文件中主要是 根据创建的类名字生成的导出库所需的一些关键字的宏定义
Q_DECL_EXPORT 导出库所用的Qt的宏定义
# define Q_DECL_EXPORT __declspec(dllexport)
Q_DECL_IMPORT是导入库所用的Qt宏
# define Q_DECL_IMPORT __declspec(dllimport)
如果不需要封装GUI的动态库,那么就可以直接写逻辑了,如果需要对GUI封装成DLL,那么就需要添加一个GUI界面
添加完一个相同的GUI类之后在qrc文件中可能会有重复的头文件,所有需要手动删除即可
还需要在.h文件中修改两处
然后就可以构建,就会在生成文件夹中有一个和工程名一样的.dll文件了
那么要怎么使用该动态库呢?
第一种使用隐式方式使用dll
将.h文件以及global.h文件添加入使用动态库工程,将动态库放在.exe运行文件debug文件夹下
第二种显式使用库中的全局函数
需要说明的是,使用QtCreate封装的GUI库,只能在QtCreate中使用,如果在VS创建的Qt工程中使用是不行的(反正我没找到方法),会说moc中的静态函数不能使用_dllexport导出,会出现有几个问题
如果想要在VS中使用动态库类GUI类对象,只能在全局函数中创建出GUI对象,然后返回给外界使用就可以了