liudianwu |
2022-11-16 17:36 |
1. 安装对应的数据库,安装后会有include头文件和lib链接库文件,这是基本的前提,编译数据库插件必须要有这两个东西。 2. 准备好数据库插件源码,比如qt-everywhere-src-5.14.2\qtbase\src\plugins\sqldrivers\mysql,可以在安装Qt的时候勾选src,或者后期直接官网重新下载源码解压出来。 3. 打开你要编译的数据库插件源码,比如mysql就打开mysql.pro,oracle就打开oci.pro。 4. 在pro中注释掉一行 #QMAKE_USE += mysql,如果是oci项目则是#QMAKE_USE += oci。 5. qsqldriverbase.pri文件中注释掉 #include($$shadowed($$PWD)/qtsqldrivers-config.pri)。
6. mysql.pro文件内容下面加上如下代码。 ```cpp path = C:/Qt/mysql-5.7.30-winx64 INCLUDEPATH += $$path/include win32:LIBS += -L$$path/lib -llibmysql ```
7. oci.pro文件内容下面加上如下代码。 ```cpp path = C:/app/Administrator/product/11.2.0/client_1 INCLUDEPATH += $$path/oci/include win32:LIBS += -L$$path/oci/lib/msvc -loci ```
8. 以上写法同时支持mingw和msvc,其他系统编译过程也是类似。编译完成后默认会在你当前源码所在盘符的根目录下,会出现plugins目录,里面sqldrivers目录下就是对应编译生成好的插件动态库。 9. 默认oracle的插件驱动代码是按照oracle12的函数写的,如果链接的是oracle11,则需要改动两行代码才能编译成功。打开qsql_oci.cpp文件大概在1559行代码左右,有个OCIBindByPos2函数改成OCIBindByPos,下面还有一行bindColumn.lengths改成(ub2*)bindColumn.lengths。 |
|