有关QT编译Oracle驱动问题
我是按照网上的方法,进行编译的。
电脑是win7(64),VS2010,QT4.8.5.先装了oracle 11 R2,按照网上的两种说法都试了一下,
1.在qt4.8.5 command prompt 进行了如下操作
set INCLUDE=D:\app\admin\product\11.2.0\client_2\oci\include;C:\Qt\4.8.5\include
set LIB= D:\app\admin\product\11.2.0\client_2\oci\lib;C:\Qt\4.8.5\lib
cd C:\Qt\4.8.5\src\plugins\sqldrivers\oci.pro
qmake -o Makefile oci.pro
nmake
最后报错,只生成了qsqlocid4.lib和qsqloci4.lib,得不到qsqlocid4.dll和qsqloci4.dll。
2.用Qt creator 打开oci.pro,添加
INCLUDEPATH +=D:\app\admin\product\11.2.0\dbhome_1\OCI\include
LIBS +=D:\app\admin\product\11.2.0\dbhome_1\OCI\lib\MSVC\oci.lib
用Qt直接编译报同样的错误。
哪位大侠遇到过同样的问题,麻烦赐教,万分感谢!
错误如下:
1> 正在创建库 debug\\qsqlocid4.lib 和对象 debug\\qsqlocid4.exp
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCIDescriptorAlloc,该符号在函数 "public: __thiscall QOCIRowId::QOCIRowId(struct OCIEnv *)" (??0QOCIRowId@@QAE@PAUOCIEnv@@@Z) 中被引用
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCIDescriptorFree,该符号在函数 "public: __thiscall QOCIRowId::~QOCIRowId(void)" (??1QOCIRowId@@QAE@XZ) 中被引用
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCIAttrSet,该符号在函数 "public: void __thiscall QOCIResultPrivate::setStatementAttributes(void)" (?setStatementAttributes@QOCIResultPrivate@@QAEXXZ) 中被引用
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCIBindByPos,该符号在函数 "public: int __thiscall QOCIResultPrivate::bindValue(struct OCIStmt *,struct OCIBind * *,struct OCIError *,int,class QVariant const &,void *,unsigned short *,class QList<class QByteArray> &)" (?bindValue@QOCIResultPrivate@@QAEHPAUOCIStmt@@PAPAUOCIBind@@PAUOCIError@@HABVQVariant@@PAXPAGAAV?$QList@VQByteArray@@@@@Z) 中被引用
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCIHandleAlloc,该符号在函数 "public: void __thiscall QOCIDriverPrivate::allocErrorHandle(void)" (?allocErrorHandle@QOCIDriverPrivate@@QAEXXZ) 中被引用
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCINumberFromInt,该符号在函数 "class QByteArray __cdecl qMakeOCINumber(__int64 const &,struct OCIError *)" (?qMakeOCINumber@@YA?AVQByteArray@@AB_JPAUOCIError@@@Z) 中被引用
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCINumberToInt,该符号在函数 "__int64 __cdecl qMakeLongLong(char const *,struct OCIError *)" (?qMakeLongLong@@YA_JPBDPAUOCIError@@@Z) 中被引用
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCIDefineByPos,该符号在函数 "public: __thiscall QOCICols::QOCICols(int,struct QOCIResultPrivate *)" (??0QOCICols@@QAE@HPAUQOCIResultPrivate@@@Z) 中被引用
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCIParamGet,该符号在函数 "public: __thiscall QOCICols::QOCICols(int,struct QOCIResultPrivate *)" (??0QOCICols@@QAE@HPAUQOCIResultPrivate@@@Z) 中被引用
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCIErrorGet,该符号在函数 "public: int __thiscall QOCICols::readPiecewise(class QVector<class QVariant> &,int)" (?readPiecewise@QOCICols@@QAEHAAV?$QVector@VQVariant@@@@H@Z) 中被引用
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCIStmtFetch,该符号在函数 "public: int __thiscall QOCICols::readPiecewise(class QVector<class QVariant> &,int)" (?readPiecewise@QOCICols@@QAEHAAV?$QVector@VQVariant@@@@H@Z) 中被引用
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCIStmtSetPieceInfo,该符号在函数 "public: int __thiscall QOCICols::readPiecewise(class QVector<class QVariant> &,int)" (?readPiecewise@QOCICols@@QAEHAAV?$QVector@VQVariant@@@@H@Z) 中被引用
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCIStmtGetPieceInfo,该符号在函数 "public: int __thiscall QOCICols::readPiecewise(class QVector<class QVariant> &,int)" (?readPiecewise@QOCICols@@QAEHAAV?$QVector@VQVariant@@@@H@Z) 中被引用
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCIAttrGet,该符号在函数 "private: struct OraFieldInfo __thiscall QOCICols::qMakeOraField(struct QOCIResultPrivate const *,struct OCIParam *)const " (?qMakeOraField@QOCICols@@ABE?AUOraFieldInfo@@PBUQOCIResultPrivate@@PAUOCIParam@@@Z) 中被引用
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCIStmtExecute,该符号在函数 "public: static bool __cdecl QOCICols::execBatch(struct QOCIResultPrivate *,class QVector<class QVariant> &,bool)" (?execBatch@QOCICols@@SA_NPAUQOCIResultPrivate@@AAV?$QVector@VQVariant@@@@_N@Z) 中被引用
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCIBindArrayOfStruct,该符号在函数 "public: static bool __cdecl QOCICols::execBatch(struct QOCIResultPrivate *,class QVector<class QVariant> &,bool)" (?execBatch@QOCICols@@SA_NPAUQOCIResultPrivate@@AAV?$QVector@VQVariant@@@@_N@Z) 中被引用
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCIHandleFree,该符号在函数 "public: __thiscall QOCIResultPrivate::~QOCIResultPrivate(void)" (??1QOCIResultPrivate@@QAE@XZ) 中被引用
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCIStmtPrepare,该符号在函数 "public: virtual bool __thiscall QOCIResult::prepare(class QString const &)" (?prepare@QOCIResult@@UAE_NABVQString@@@Z) 中被引用
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCIEnvCreate,该符号在函数 "public: __thiscall QOCIDriver::QOCIDriver(class QObject *)" (??0QOCIDriver@@QAE@PAVQObject@@@Z) 中被引用
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCIServerVersion,该符号在函数 "public: virtual bool __thiscall QOCIDriver::open(class QString const &,class QString const &,class QString const &,class QString const &,int,class QString const &)" (?open@QOCIDriver@@UAE_NABVQString@@000H0@Z) 中被引用
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCISessionBegin,该符号在函数 "public: virtual bool __thiscall QOCIDriver::open(class QString const &,class QString const &,class QString const &,class QString const &,int,class QString const &)" (?open@QOCIDriver@@UAE_NABVQString@@000H0@Z) 中被引用
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCIServerAttach,该符号在函数 "public: virtual bool __thiscall QOCIDriver::open(class QString const &,class QString const &,class QString const &,class QString const &,int,class QString const &)" (?open@QOCIDriver@@UAE_NABVQString@@000H0@Z) 中被引用
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCIServerDetach,该符号在函数 "public: virtual void __thiscall QOCIDriver::close(void)" (?close@QOCIDriver@@UAEXXZ) 中被引用
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCISessionEnd,该符号在函数 "public: virtual void __thiscall QOCIDriver::close(void)" (?close@QOCIDriver@@UAEXXZ) 中被引用
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCITransStart,该符号在函数 "protected: virtual bool __thiscall QOCIDriver::beginTransaction(void)" (?beginTransaction@QOCIDriver@@MAE_NXZ) 中被引用
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCITransCommit,该符号在函数 "protected: virtual bool __thiscall QOCIDriver::commitTransaction(void)" (?commitTransaction@QOCIDriver@@MAE_NXZ) 中被引用
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCITransRollback,该符号在函数 "protected: virtual bool __thiscall QOCIDriver::rollbackTransaction(void)" (?rollbackTransaction@QOCIDriver@@MAE_NXZ) 中被引用
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCILobRead,该符号在函数 "int __cdecl qReadLob<class QString,2>(class QString &,struct QOCIResultPrivate const *,struct OCILobLocator *)" (??$qReadLob@VQString@@$01@@YAHAAVQString@@PBUQOCIResultPrivate@@PAUOCILobLocator@@@Z) 中被引用
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCILobGetLength,该符号在函数 "int __cdecl qReadLob<class QString,2>(class QString &,struct QOCIResultPrivate const *,struct OCILobLocator *)" (??$qReadLob@VQString@@$01@@YAHAAVQString@@PBUQOCIResultPrivate@@PAUOCILobLocator@@@Z) 中被引用
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCILobCharSetForm,该符号在函数 "int __cdecl qReadLob<class QString,2>(class QString &,struct QOCIResultPrivate const *,struct OCILobLocator *)" (??$qReadLob@VQString@@$01@@YAHAAVQString@@PBUQOCIResultPrivate@@PAUOCILobLocator@@@Z) 中被引用
1>debug\\qsqlocid4.dll : fatal error LNK1120: 30 个无法解析的外部命令
电脑是win7(64),VS2010,QT4.8.5.先装了oracle 11 R2,按照网上的两种说法都试了一下,
1.在qt4.8.5 command prompt 进行了如下操作
set INCLUDE=D:\app\admin\product\11.2.0\client_2\oci\include;C:\Qt\4.8.5\include
set LIB= D:\app\admin\product\11.2.0\client_2\oci\lib;C:\Qt\4.8.5\lib
cd C:\Qt\4.8.5\src\plugins\sqldrivers\oci.pro
qmake -o Makefile oci.pro
nmake
最后报错,只生成了qsqlocid4.lib和qsqloci4.lib,得不到qsqlocid4.dll和qsqloci4.dll。
2.用Qt creator 打开oci.pro,添加
INCLUDEPATH +=D:\app\admin\product\11.2.0\dbhome_1\OCI\include
LIBS +=D:\app\admin\product\11.2.0\dbhome_1\OCI\lib\MSVC\oci.lib
用Qt直接编译报同样的错误。
哪位大侠遇到过同样的问题,麻烦赐教,万分感谢!
错误如下:
1> 正在创建库 debug\\qsqlocid4.lib 和对象 debug\\qsqlocid4.exp
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCIDescriptorAlloc,该符号在函数 "public: __thiscall QOCIRowId::QOCIRowId(struct OCIEnv *)" (??0QOCIRowId@@QAE@PAUOCIEnv@@@Z) 中被引用
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCIDescriptorFree,该符号在函数 "public: __thiscall QOCIRowId::~QOCIRowId(void)" (??1QOCIRowId@@QAE@XZ) 中被引用
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCIAttrSet,该符号在函数 "public: void __thiscall QOCIResultPrivate::setStatementAttributes(void)" (?setStatementAttributes@QOCIResultPrivate@@QAEXXZ) 中被引用
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCIBindByPos,该符号在函数 "public: int __thiscall QOCIResultPrivate::bindValue(struct OCIStmt *,struct OCIBind * *,struct OCIError *,int,class QVariant const &,void *,unsigned short *,class QList<class QByteArray> &)" (?bindValue@QOCIResultPrivate@@QAEHPAUOCIStmt@@PAPAUOCIBind@@PAUOCIError@@HABVQVariant@@PAXPAGAAV?$QList@VQByteArray@@@@@Z) 中被引用
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCIHandleAlloc,该符号在函数 "public: void __thiscall QOCIDriverPrivate::allocErrorHandle(void)" (?allocErrorHandle@QOCIDriverPrivate@@QAEXXZ) 中被引用
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCINumberFromInt,该符号在函数 "class QByteArray __cdecl qMakeOCINumber(__int64 const &,struct OCIError *)" (?qMakeOCINumber@@YA?AVQByteArray@@AB_JPAUOCIError@@@Z) 中被引用
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCINumberToInt,该符号在函数 "__int64 __cdecl qMakeLongLong(char const *,struct OCIError *)" (?qMakeLongLong@@YA_JPBDPAUOCIError@@@Z) 中被引用
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCIDefineByPos,该符号在函数 "public: __thiscall QOCICols::QOCICols(int,struct QOCIResultPrivate *)" (??0QOCICols@@QAE@HPAUQOCIResultPrivate@@@Z) 中被引用
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCIParamGet,该符号在函数 "public: __thiscall QOCICols::QOCICols(int,struct QOCIResultPrivate *)" (??0QOCICols@@QAE@HPAUQOCIResultPrivate@@@Z) 中被引用
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCIErrorGet,该符号在函数 "public: int __thiscall QOCICols::readPiecewise(class QVector<class QVariant> &,int)" (?readPiecewise@QOCICols@@QAEHAAV?$QVector@VQVariant@@@@H@Z) 中被引用
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCIStmtFetch,该符号在函数 "public: int __thiscall QOCICols::readPiecewise(class QVector<class QVariant> &,int)" (?readPiecewise@QOCICols@@QAEHAAV?$QVector@VQVariant@@@@H@Z) 中被引用
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCIStmtSetPieceInfo,该符号在函数 "public: int __thiscall QOCICols::readPiecewise(class QVector<class QVariant> &,int)" (?readPiecewise@QOCICols@@QAEHAAV?$QVector@VQVariant@@@@H@Z) 中被引用
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCIStmtGetPieceInfo,该符号在函数 "public: int __thiscall QOCICols::readPiecewise(class QVector<class QVariant> &,int)" (?readPiecewise@QOCICols@@QAEHAAV?$QVector@VQVariant@@@@H@Z) 中被引用
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCIAttrGet,该符号在函数 "private: struct OraFieldInfo __thiscall QOCICols::qMakeOraField(struct QOCIResultPrivate const *,struct OCIParam *)const " (?qMakeOraField@QOCICols@@ABE?AUOraFieldInfo@@PBUQOCIResultPrivate@@PAUOCIParam@@@Z) 中被引用
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCIStmtExecute,该符号在函数 "public: static bool __cdecl QOCICols::execBatch(struct QOCIResultPrivate *,class QVector<class QVariant> &,bool)" (?execBatch@QOCICols@@SA_NPAUQOCIResultPrivate@@AAV?$QVector@VQVariant@@@@_N@Z) 中被引用
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCIBindArrayOfStruct,该符号在函数 "public: static bool __cdecl QOCICols::execBatch(struct QOCIResultPrivate *,class QVector<class QVariant> &,bool)" (?execBatch@QOCICols@@SA_NPAUQOCIResultPrivate@@AAV?$QVector@VQVariant@@@@_N@Z) 中被引用
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCIHandleFree,该符号在函数 "public: __thiscall QOCIResultPrivate::~QOCIResultPrivate(void)" (??1QOCIResultPrivate@@QAE@XZ) 中被引用
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCIStmtPrepare,该符号在函数 "public: virtual bool __thiscall QOCIResult::prepare(class QString const &)" (?prepare@QOCIResult@@UAE_NABVQString@@@Z) 中被引用
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCIEnvCreate,该符号在函数 "public: __thiscall QOCIDriver::QOCIDriver(class QObject *)" (??0QOCIDriver@@QAE@PAVQObject@@@Z) 中被引用
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCIServerVersion,该符号在函数 "public: virtual bool __thiscall QOCIDriver::open(class QString const &,class QString const &,class QString const &,class QString const &,int,class QString const &)" (?open@QOCIDriver@@UAE_NABVQString@@000H0@Z) 中被引用
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCISessionBegin,该符号在函数 "public: virtual bool __thiscall QOCIDriver::open(class QString const &,class QString const &,class QString const &,class QString const &,int,class QString const &)" (?open@QOCIDriver@@UAE_NABVQString@@000H0@Z) 中被引用
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCIServerAttach,该符号在函数 "public: virtual bool __thiscall QOCIDriver::open(class QString const &,class QString const &,class QString const &,class QString const &,int,class QString const &)" (?open@QOCIDriver@@UAE_NABVQString@@000H0@Z) 中被引用
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCIServerDetach,该符号在函数 "public: virtual void __thiscall QOCIDriver::close(void)" (?close@QOCIDriver@@UAEXXZ) 中被引用
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCISessionEnd,该符号在函数 "public: virtual void __thiscall QOCIDriver::close(void)" (?close@QOCIDriver@@UAEXXZ) 中被引用
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCITransStart,该符号在函数 "protected: virtual bool __thiscall QOCIDriver::beginTransaction(void)" (?beginTransaction@QOCIDriver@@MAE_NXZ) 中被引用
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCITransCommit,该符号在函数 "protected: virtual bool __thiscall QOCIDriver::commitTransaction(void)" (?commitTransaction@QOCIDriver@@MAE_NXZ) 中被引用
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCITransRollback,该符号在函数 "protected: virtual bool __thiscall QOCIDriver::rollbackTransaction(void)" (?rollbackTransaction@QOCIDriver@@MAE_NXZ) 中被引用
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCILobRead,该符号在函数 "int __cdecl qReadLob<class QString,2>(class QString &,struct QOCIResultPrivate const *,struct OCILobLocator *)" (??$qReadLob@VQString@@$01@@YAHAAVQString@@PBUQOCIResultPrivate@@PAUOCILobLocator@@@Z) 中被引用
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCILobGetLength,该符号在函数 "int __cdecl qReadLob<class QString,2>(class QString &,struct QOCIResultPrivate const *,struct OCILobLocator *)" (??$qReadLob@VQString@@$01@@YAHAAVQString@@PBUQOCIResultPrivate@@PAUOCILobLocator@@@Z) 中被引用
1>qsql_oci.obj : error LNK2019: 无法解析的外部符号 _OCILobCharSetForm,该符号在函数 "int __cdecl qReadLob<class QString,2>(class QString &,struct QOCIResultPrivate const *,struct OCILobLocator *)" (??$qReadLob@VQString@@$01@@YAHAAVQString@@PBUQOCIResultPrivate@@PAUOCILobLocator@@@Z) 中被引用
1>debug\\qsqlocid4.dll : fatal error LNK1120: 30 个无法解析的外部命令
...全文
相关推荐
QT在32位mysql下的驱动
QT在32位mysql下的驱动。提供了在VS2010系统下进行mysql数据库开发所需要的相关驱动,已经编译测试通过。
编译qt的oracle驱动QOCI
编译qt的oracle驱动QOCI最近做qt开发需要连接远程的oracle数据库,发现qt下连接oracle数据库需要自己编译qoci的驱动。经过多番折腾终于编译成功,期间遇到很多问题,所以记录了下来,希望对遇到同样问题人有所帮助。编译环境: qt 5.5.1+MSVC2010 32bit oracle10g客户端 win7 64位系统 使用qt命令行编译1、打开qt命令行界面 2、在命令行中
QOCI驱动Dll
QOCI DLL驱动(QT版本4.8.4)
qt编译oracle支持的驱动oci,win7 64位oracle和qt32位
亲测可以使用,如标题,经过长达3天的总结和编译终于总结出来的方案
Qt的Oracle应用.docx
该文档为按自己的经验编写的qt使用Oracle的教程文档,从编译Oracle驱动开始,到增删改查的应用,文档很全面,里面也讲解了关于Oracle字符集为American时读写中文乱码的问题解决。


