1. 概述
Qt Quick技术的引入,使得你能够快速构建 UI,具有动画、各种绚丽效果的 UI都不在话下。在许多情况下基于QML开发的漂亮的界面想将他设计成组件提供给其他人使用,又不想让别人看到QML源码,另外如果其他人是基于vc环境又如何使用你的QML界面呢?本文介绍如何将基于QT.6 QML开发的模块编译成可以在VS环境中直接使用的DLL库文件,并举例使用QZXing识别二维码。下面是实现的步骤:
2. 下载需要的软件
2.1. 下载Qtwinmigrate
一般直接编写的QT动态库是无法被Windows下的VC等调用的。有一个叫做Qtwinmigrate的开源软件解决了这个问题,Qtwinmigrate的下载地址:https://github.com/qtproject/qt-solutions/tree/master/qtwinmigrate
2.2. 下载QZXing
ZXing库是一个用来识别二维码的库,QZXing是一个基于Qt的Qt wrapper library,在本文我们使用它和qml开发一个小应用来实现二维码的解码。
3. 创建DLL库
3.1. 创建QT共享库项目
打开qt creator或VS2015,新建C++ 库项目,依次下一步,记得在选择需要的模块的时候选择qml、quick、widgets模块,项目的名字为2DDecodeLib,向导完成后删除自动生成的两个头文件,因为这是QT新建DLL自带的,我们要写的是可以供其他语言调用的DLL,我这里的例子是只用了一个函数。
qt creator 3.60截图
Vs2015截图
选择模块截图
要删除自动生成的两个头文件
3.2. 加入Qtwinmigrate支持
将下载的Qtwinmigrate解压,并将common.pri和src目录拷贝到2DDecodeLib项目的文件夹下,在项目的PRO文件中最后加入一行: