创建动态库工程

Qt 使用共享库

选择模块需要注意的是如果想要将GUI封装成一个动态库,那么必须要要将QtWidgets选中,不然是不能生成ui_xxx.h头文件的Qt 使用共享库

接下来直接都下一步直到创建好就好

Qt 使用共享库

创建好之后会有两个头文件,一个.cpp文件

Global.h头文件中主要是 根据创建的类名字生成的导出库所需的一些关键字的宏定义

Qt 使用共享库

Q_DECL_EXPORT 导出库所用的Qt的宏定义

#    define Q_DECL_EXPORT     __declspec(dllexport)

Q_DECL_IMPORT是导入库所用的Qt宏

#    define Q_DECL_IMPORT     __declspec(dllimport)

 

如果不需要封装GUI的动态库,那么就可以直接写逻辑了,如果需要对GUI封装成DLL,那么就需要添加一个GUI界面

Qt 使用共享库

添加完一个相同的GUI类之后在qrc文件中可能会有重复的头文件,所有需要手动删除即可

Qt 使用共享库

还需要在.h文件中修改两处

然后就可以构建,就会在生成文件夹中有一个和工程名一样的.dll文件了

Qt 使用共享库

那么要怎么使用该动态库呢?

 

第一种使用隐式方式使用dll

将.h文件以及global.h文件添加入使用动态库工程,将动态库放在.exe运行文件debug文件夹下

Qt 使用共享库

Qt 使用共享库

第二种显式使用库中的全局函数

Qt 使用共享库

需要说明的是,使用QtCreate封装的GUI库,只能在QtCreate中使用,如果在VS创建的Qt工程中使用是不行的(反正我没找到方法),会说moc中的静态函数不能使用_dllexport导出,会出现有几个问题

如果想要在VS中使用动态库类GUI类对象,只能在全局函数中创建出GUI对象,然后返回给外界使用就可以了

相关文章:

  • 2022-12-23
  • 2021-12-04
  • 2021-10-30
  • 2021-08-06
  • 2021-11-01
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-07-25
  • 2021-10-24
  • 2022-12-23
  • 2021-04-24
  • 2022-12-23
相关资源
相似解决方案