Qt5.12编译Oracle数据库驱动并连接数据库步骤

最近项目需求做个连接Oracle的桌面程序,想用Qt来做,结果环境配置就弄了两天,记录一下。

                                                         

Qt版本: Qt5.12.2

Oracle版本: 11.2.0

操作系统: window 10

                                                         

Qt在安装的时候可以选择多个编译器套件,我选了mingw73_32、mingw73_64、msvc2015_64、msvc2017_64四种,另外还需要选择Source(源码)。

然后打开QtCreator,打开D:\Qt\5.12.2\Src\qtbase\src\plugins\sqldrivers\oci项目(我是装在D盘),修改oci.pro文件:

我先尝试了msvc2015_64编译,修改文件:

QMAKE_USE += oci 改为 QMAKE_LFLAGS +=oci.lib
INCLUDEPATH += E:\app\Administrator\product\11.2.0\dbhome_2\OCI\include
LIBPATH += E:\app\Administrator\product\11.2.0\dbhome_2\OCI\lib\MSVC

然后报OCIBindByPos2函数未定义错误,修改qsql_oci.cpp文件的1559行附近:
        r = OCIBindByPos(
                d->sql, &bindColumn.bindh, d->err, i + 1,
                bindColumn.data,
                bindColumn.maxLen,
                bindColumn.bindAs,
                bindColumn.indicators,
                reinterpret_cast(bindColumn.lengths),
                0,
                arrayBind ? bindColumn.maxarr_len : 0,
                arrayBind ? &bindColumn.curelep : 0,
                OCI_DEFAULT);

然后重新qmake,没问题,构建,找不到qtsqldrivers-config.pri,网上查了半天,什么重新下载源码,算了,换个编译器,反正编译器多。。。

我又换了mingw73_32来编译,需要修改oci.pro文件:

QMAKE_USE += oci 改为  QMAKE_LFLAGS += E:\app\Administrator\product\11.2.0\dbhome_2\BIN\oci.dll

另两行一样

然后报错,说oci.dll识别不了。

然后我又换了mingw73_64,这次没有问题,成功编译,生成了驱动,我的是生成在D:\plugins\sqldrivers目录下,将qsqloci.dll、qsqlocid.dll拷贝到D:\Qt\5.12.2\mingw73_64\plugins\sqldrivers目录,然后写代码连接数据库,在新项目的.pro文件中添加:

INCLUDEPATH += E:\app\Administrator\product\11.2.0\dbhome_2\OCI\include

然后编译运行,报错:无法运行rc.exe,将C:\Program Files (x86)\Windows Kits\10\bin\x64目录下的rc.exe、rcdll.dll拷贝到相应目录,仍然报错。。。

没关系,再换,这次用msvc2017_64,将oci.pro改回来:

QMAKE_LFLAGS +=oci.lib

编译构建成功,驱动拷贝到D:\Qt\5.12.2\msvc2017_64\plugins\sqldrivers目录,重新运行连接数据库的代码,终于成功!

前面遇到的问题应该都是可以解决的,但是时间宝贵,能满足需要就行。

你可能感兴趣的:(环境配置)