在前一篇的文章中我已经发过一个相似的文章,详情请点击:Qt5编译oracle驱动教程

在那一篇文章中已经可以解决了Qt5的常用版本的Oracle数据库驱动的支持,但是在新的Qt开发工具中那种方法竟然失效了,具体出现在Qt5.7.1之后的版本。

这次我带来Qt5.8.0的编译教程,Qt5.9的版本同样适用。

Qt版本是Qt5.8.0,安装路径是默认的 C:\Qt\Qt5.8.0,Oracle客户端版本oracle 11g 安装路径是 D:\app\Xiao\product\11.2.0\client_1

打开C:\Qt\Qt5.8.0\5.8\Src\qtbase\src\plugins\sqldrivers\oci目录下面的oci.pro。

未进行修改的直接编译结果: Library 'oci' is not defined.

,

网上有一片关于qt5.8 + vs2015 编译 qoci 驱动 Project ERROR: Library 'oci' is not defined的教程,但是和我用的不一样,我用的是mingw版本。故此他的方法我用不了。如果你的是用vs编译的可以去他那边看看,成与不成我没试过。

使用vc编译的将源文件中的QMAKE_USE += oci改为QMAKE_LFLAGS +=oci.lib,使用gcc编译的改为QMAKE_LFLAGS +=oci.dll,因为我用的是mingw版本所以我的是QMAKE_LFLAGS +=oci.dll。注:QMAKE_LFLAGS的意思是指定依赖库的路径。

进行修改后的编译结果:oci.dll: No such file or directory,没有这个文件或者目录

出现这种结果的原因很简单,那是因为你安装的Oracle数据库没有将对应的bin目录的路径添加到PATH中

图上面的是我的bin路径。这时候你们会说我的里面也添加了,软件安装的时候就自己添加了等等……

这里声明一下为什么要添加PATH,因为QMAKE_LFLAGS +=oci.dll,他加载的“oci.dll”就在那个bin目录里面,现在你们都明白了吧!

而我们出现错误的原因就是这里,Qt他没有找到你的PATH,故此我们就用最简单粗暴的方法添加进去就可以。

QMAKE_LFLAGS +=D:\app\Xiao\product\11.2.0\client_1\BIN\oci.dll,注:加红的部分是你安装的Oracle数据库的bin目录位置。

进行到了这里,好多人还是没办法编译成功,嘿嘿……下面就是我要提醒你们的,如果你们看过上一篇类似文章的话,就不该忘记添加

INCLUDEPATH += D:\app\Xiao\product\11.2.0\client_1\oci\include

LIBPATH += D:\app\Xiao\product\11.2.0\client_1\oci\lib\msvc

之后再重新编译,就会发现编译通过了,这时候我们在Qt安装的根目录下面去找 “:\plugins”会发现里面有一个“ sqldrivers ”文件夹,将其复制到Qt的..\Qt\Qt5.8.0\5.8\mingw53_32\plugins下面即可。

好了,到这就结束了,来总结一下就是需要:

1、修改:将原有的QMAKE_USE += oci改为QMAKE_LFLAGS +=D:\app\Xiao\product\11.2.0\client_1\BIN\oci.dll。

2、添加:INCLUDEPATH += D:\app\Xiao\product\11.2.0\client_1\oci\include

      LIBPATH += D:\app\Xiao\product\11.2.0\client_1\oci\lib\msvc

3、编译:构建→重新构建项目“oci”

4、拷贝:将:\plugins下面的“ sqldrivers ”文件夹复制到Qt的..\Qt\Qt5.8.0\5.8\mingw53_32\plugins下面即可。

Qt5.8以上版本编译Oracle数据库的OCI驱动教程的更多相关文章

  1. WIN7+Qt5.2.0连接oracle数据库的oci驱动的编译

    一.前提安装 1.需要安装QT5.2.0,本介绍安装的是qt-windows-opensource-5.2.0-mingw48_opengl-x86-offline.exe: 本文安装目录:c:\Qt ...

  2. Qt5.5.1和Qt5.3.2编译OCI驱动教程及验证方法

    我们都知道oracle数据库的强大,并且好多企业或者教学用到数据库时都会推荐使用.但是Qt因为版权问题没有封装oracle数据库专用驱动,网上也有一大堆说法和教程,但是或多或少的都有问题.下面废话不多 ...

  3. oracle 10.1-10.4版本的oracle数据库要求

    1.针对arcgis 10.1的oracle数据库要求 受支持的数据库版本 标准版/标准独立版/企业版: Oracle 10g R2(64 位)10.2.0.3 Oracle 11g R1(64 位) ...

  4. Java连接oracle数据库的OCI和THIN

    使用jdbc连接上oracle有两种方法: 1. 使用thin连接 由于thin驱动都是纯Java代码,并且使用TCP/IP技术通过java的Socket连接上Oracle数据库,所以thin驱动是与 ...

  5. 学习Oracle数据库入门到精通教程资料合集

    任何大型信息系统,都需要有数据库管理系统作为支撑.其中,Oracle以其卓越的性能获得了广泛的应用.本合集汇总了学习Oracle数据库从入门到精通的30份教程资料. 资料名称 下载地址 超详细Orac ...

  6. Oracle数据库远程连接配置教程

    本人前一段时间做过Oracle数据库的相关工作.可是发现数据库的监听程序和服务名比較难搞定,并且网上也没有现成的教程.所以经过自己的探索之后将这片文章贡献给大家,如有不当之处还请谅解并请联系本人. 此 ...

  7. 在Maven仓库中添加Oracle数据库的JDBC驱动依赖

    在使用idea连接oracle数据库时发现直接添加oracle依赖 <dependency><groupId>com.oracle</groupId><art ...

  8. oracle 数据库的详细安装教程

    由于oracle数据库比较大 所以安装的时候比较慢是目前装的最大的软件了吧 而且如果装崩了 可能还会重装系统 不过比较幸运 一次就装好 1.需要去官网下载  https://www.oracle.co ...

  9. Oracle数据库入门——初级系列教程

随机推荐

  1. Bootsrtap表单

    前面的话 表单是用来与用户做交流的一个网页控件,良好的表单设计能够让网页与用户更好的沟通.表单中常见的元素主要包括:文本输入框.下拉选择框.单选按钮.复选按钮.文本域和按钮等.其中每个控件所起的作用都 ...

  2. 使用freemarker模板生成word文档

    项目中最近用到这个东西,做下记录. 如下图,先准备好一个(office2003)word文档当做模板.文档中图片.姓名.性别和生日已经使用占位符代替,生成过程中将会根据实际情况进行替换. 然后将wor ...

  3. (转载)Java多线程的监控分析工具(VisualVM)

    原文链接:http://blog.csdn.net/chendc201/article/details/22905511 在Java多线程程序运行时,多数情况下我们不知道到底发生了什么,只有出了错误的 ...

  4. [Splay伸展树]splay树入门级教程

    首先声明,本教程的对象是完全没有接触过splay的OIer,大牛请右上角.. 首先引入一下splay的概念,他的中文名是伸展树,意思差不多就是可以随意翻转的二叉树 PS:百度百科中伸展树读作:BoGa ...

  5. python机器学习实战(一)

    python机器学习实战(一) 版权声明:本文为博主原创文章,转载请指明转载地址 www.cnblogs.com/fydeblog/p/7140974.html  前言 这篇notebook是关于机器 ...

  6. 解决element-ui 中upload组件使用多个时无法绑定对应的元素

    问题场景 我们在一个列表中分别都需要有upload组件的时候也就涉及到了多个upload同时存在: 因为一般可以在success回调中拿到上传成功的图片已经成功的response,多个也可以,这个没毛 ...

  7. mysql数据库定时备份

    最近要用到mysql备份,就写了shell脚本用于备份. #!/bin/bash #定义备份的数据库名称 database=*** #定义备份的时间 currTime=$(date +%Y%m%d) ...

  8. PLC编程算法

    PLC编程算法(一) 01 开关量也称逻辑量,指仅有两个取值,0或1.ON或OFF.它是最常用的控制,对它进行控制是PLC的优势,也是PLC最基本的应用. 开关量控制的目的是,根据开关量的当前输入组合 ...

  9. es6的模块化编程

    es6的模块化编程 基本用法 es6 中新增了两个命令 export 和 import , export 命令用于规定模块的对外接口,import 命令用于输入其他模块提供的功能. 一个模块就是一个独 ...

  10. C#常用8种排序算法实现以及原理简介

    public static class SortExtention { #region 冒泡排序 /* * 已知一组无序数据a[1].a[2].--a[n],需将其按升序排列.首先比较a[1]与a[2 ...