• 6521阅读
  • 4回复

有关QT4.8.5编译Oracle驱动问题 [复制链接]

上一主题 下一主题
离线霸天环宇
 

只看楼主 正序阅读 楼主  发表于: 2014-11-29

我是按照网上的方法,进行编译的。
电脑是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 个无法解析的外部命令
离线huangms

只看该作者 4楼 发表于: 2017-08-12
安装32位的Oracle Database Instant Client。然后再编译。千万不要用64位的。否则会出现你这边的错误
离线w_zhong

只看该作者 3楼 发表于: 2015-08-16
遇到类似问题,有没有解决方法。
离线joryssl3210

只看该作者 2楼 发表于: 2014-12-23
我也是,编译从来没有成功过
离线倾城绝恋

只看该作者 1楼 发表于: 2014-12-01
解决了吗?遇到同样的问题
快速回复
限100 字节
 
上一个 下一个