Qt mingw64连接oracle11g问题

qt写的程序连接oracle

首先需要编译oci,这个网上都有,大同小异,我随便试了一个教程就过了。

然后是打包windeployqt指令之后,发现可以在自己电脑上运行。但是转移到别的电脑上就报错,

                       driver not loaded

这个错误的教程都是让你把qt安装目录下的mingw中sqldrivers目录中的动态链接库拷过去就行,仔细查询发现windeployqt实际上会自动把这些库拷过去,这个不是错误发生原因。

查了很多教程,有一些教程提到了oci问题,所以我将oracle服务器上的oci.dll拷进了exe程序目录下,

                    unable to logon

继续以新关键词搜,这个时候发现,单独的oci.dll似乎并没有直接让qt程序连接数据库的能力,为什么我的电脑上能运行,是因为安装过oracle服务器端,系统的环境变量中指向了oracle安装路径的bin文件夹,所以程序实际上调用的是oracle里的oci.dll动态链接库。

按照这个逻辑,将整个oracle客户端加入环境变量path中可以解决问题,但是客户端太大了,我不可能为了几十m的小qt程序加一个几百m的oracle客户端。

仔细思考,为什么会报错?实际上是少了运行环境,在windows下更是简单直接,就是少了dll,oracle目录下的诸多dll不可能全都必须要。这个时候我发现数据库连接工具可以帮到我,我去navicat premium12.0.11下找,既然navicat能连接oracle,那肯定也有相应的dll,一般来说,这样的东西程序员并不会直接整合到其他的文件中去,很可能还是以单个文件的形式存在。

果然,navicat安装目录下,几乎全是各种各样的dll动态链接库,其中与oracle相关的还给你用文件夹包好了,

位于 instantclient_10_2下,含义为即时客户端,其中有三个dll

oci.dll

orannzsbb10.dll

oraociicus10.dll

把这三个dll拷贝到exe目录下,运行,问题解决

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值