编译qt的oracle驱动QOCI
2016-12-02 13:36
260 查看
编译qt的oracle驱动QOCI
最近做qt开发需要连接远程的oracle数据库,发现qt下连接oracle数据库需要自己编译qoci的驱动。经过多番折腾终于编译成功,期间遇到很多问题,所以记录了下来,希望对遇到同样问题人有所帮助。编译环境:
qt 5.5.1+MSVC2010 32bitoracle10g客户端
win7 64位系统
使用qt命令行编译
1、打开qt命令行界面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文件夹下(让我好找)。
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时是默认安装如图:
没有勾选Source Components选项,导致未安装源码文件,也就是qt安装目录下没有src文件夹,所以编译oracle驱动时安装的qt最好将组件全勾选。
相关文章推荐
- Oracle中sequence的创建和sequence的触发器的创建
- oracle转db2
- 怎么查看Oracle数据库中的所有用户名
- .dmx文件打开工具,oracle数据库设计工具
- DDL、DML和DCL的理解
- Oracle闪回技术详解
- oracle 存储过程 创建表
- Oracle常用函数系列之二:字符函数(2)
- python:cx_oracle基本使用
- libodb编译过程
- oracle查看当前用户权限
- oracle中判断某列是否为数字
- Oracle中视图的创建和处理方法
- oracle定时任务(dbms_job)
- 最新Oracle 和 mysql 的对比参照----开发篇
- Oracle数据库新建用户并为其创建一个视图(示例)
- ORA-12526: TNS: 监听程序: 所有适用例程都处于受限模式
- 数据库原理实验实验四 oracle的安全性和完整性控制
- Oracle Warehouse Builder (OWB)
- oracle11g安装和基本的使用,手把手看图教你用起来。