由于前几天为了安装Qt快一点,没有选择sources ,所以导致了要连接oracle 没有驱动,该这么办呢。
1、http://download.qt.io/archive/qt/5.9/5.9.1/single/ 下载 qt-everywhere-opensource-src-5.9.1.zip , 跟我一样没有选择sources的人可以从Qt的官网下载源文件,解压并拷贝到D:\Qt\Qt5.9.1\5.9.1,为了和安装的一样,更名为Src文件夹。
2、打开Qt5.9.1 for desktop (mingw 5.3.0 32 bit) 直接到D:\Qt\Qt5.9.1\5.9.1\Src\qtbase\src\plugins\sqldrivers\oci 路径下,这个时候如果和前面的一样直接qmake,会报错,找不到 qsqldriverbase.pri ,这个时候你需要cd..,返回到上级,qmake一下,这样就可以了。
3、回来qmake还是不行,会报错 “Library 'oci' is not defined” 还会报 “qsql_oci.cpp:65:17: fatal error: oci.h: No such file or directory” 这个时候就是pro文件的问题了,咱们用的是mingw的版本,所以解决办法是 原来默认的pro代码是
TARGET = qsqloci
HEADERS += $$PWD/qsql_oci_p.h
SOURCES += $$PWD/qsql_oci.cpp $$PWD/main.cpp
QMAKE_USE += oci
darwin:QMAKE_LFLAGS += -Wl,-flat_namespace,-U,_environ
OTHER_FILES += oci.json
PLUGIN_CLASS_NAME = QOCIDriverPlugin
include(../qsqldriverbase.pri)
改成
TARGET = qsqloci
HEADERS += $$PWD/qsql_oci_p.h
SOURCES += $$PWD/qsql_oci.cpp $$PWD/main.cpp
#QMAKE_USE += oci
QMAKE_LFLAGS +=D:\oracle\product\10.2.0\db_1\BIN\oci.dll
darwin:QMAKE_LFLAGS += -Wl,-flat_namespace,-U,_environ
OTHER_FILES += oci.json
INCLUDEPATH += D:\oracle\product\10.2.0\db_1\OCI\include
LIBPATH += D:\oracle\product\10.2.0\db_1\OCI\lib\MSVC
PLUGIN_CLASS_NAME = QOCIDriverPlugin
include(../qsqldriverbase.pri)
改变qmake的dll路径,和添加oracle里面的编译需要文件夹,这个时候在qmake , mingw32-make ,叮叮叮,成功编译。
4、拷贝:将:D:\Qt\Qt5.9.1\5.9.1\Src\qtbase\src\plugins\sqldrivers\plugins\sqldrivers文件夹里面生成的qsqloci.dll,qsqlocid.dll 复制到D:\Qt\Qt5.9.1\5.9.1\mingw53_32\plugins\sqldrivers下面即可。具体测试代码,看我前面的博客。