编译qt的oracle驱动QOCI

编译qt的oracle驱动QOCI

最近做qt开发需要连接远程的oracle数据库,发现qt下连接oracle数据库需要自己编译qoci的驱动。经过多番折腾终于编译成功,期间遇到很多问题,所以记录了下来,希望对遇到同样问题人有所帮助。

编译环境:

  • qt 5.5.1+MSVC2010 32bit
  • oracle10g客户端
  • win7 64位系统

使用qt命令行编译

1、打开qt命令行界面
编译qt的oracle驱动QOCI_第1张图片
2、在命令行中依次输入一下命令:

set INCLUDE=%INCLUDE%;D:\oracle\product\10.2.0\client_1\oci\include

set LIB=%LIB%;D:\oracle\product\10.2.0\client_1\oci\lib\msvc

cd C:\Qt\Qt5.5.1\5.5\Src\qtbase\src\plugins\sqldrivers\oci

qmake -o Makefile

nmake

其中D:\oracle\product\10.2.0\client_1\oci为oracle客户端的安装 目录;C:\Qt\Qt5.5.1\5.5\Src\qtbase\src\plugins\sqldrivers\oci为qt的oci.pro文件所在目录。

以上4条命令都正确执行后当执行nmake命令时报:”rc”不是内部命令或外部命令,由于工程进度原因在查找原因无果后,在网上看到别人直接用qt creater编译,亲测可用,于是记录这种方法

qt create编译oracle驱动

1、使用qt creater直接打开C:\Qt\Qt5.5.1\5.5\Src\qtbase\src\plugins\sqldrivers\oci\oci.pro文件,工具会自动创建工程。
2、右键工程点击“运行”按钮,工具会自动编译oracle驱动,我生成的文件在c盘根目录下的plugins文件夹下,而不是在debug文件夹下(让我好找)。
编译qt的oracle驱动QOCI_第2张图片
3、将其中的qsqloci.dll、qsqlocid.dll两个文件复制到C:\Qt\Qt5.5.1\5.5\msvc2010\plugins\sqldrivers文件夹下,成功了!

遇到问题及解决方法

1、LNK2019:无法解析的外部符号
由于我使用的是32位的qt然后链接的是64位的oracle11g客户端导致报这个错,所以重装了一个32位的oracle10g的客户端,问题解决。

2、nmake不是内部命令或外部命令
在电脑的环境变量path中加入C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin

3、

QSqlDatabase: QOCI driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QOCI QOCI8 QODBC QODBC3 QPSQL QPSQL7

调用oracle数据库的时候显示无法加载QOCI驱动,但是刚刚我已经编译好了 ,而且下面一行提示中也有QOCI QOCI8的驱动,说明oracle驱动正确加载了。发现是我在一台没有安装oracle客户端电脑上调试才报此错,于是安装oracle10g客户端问题解决。
4、在qt安装目录下无法找到oci.pro文件
由于我安装qt5.5.1时是默认安装如图:
编译qt的oracle驱动QOCI_第3张图片
没有勾选Source Components选项,导致未安装源码文件,也就是qt安装目录下没有src文件夹,所以编译oracle驱动时安装的qt最好将组件全勾选。

你可能感兴趣的:(编译qt的oracle驱动QOCI)