PDA

View Full Version : Compiling Oracle 64 bits driver for Qt 4.8.5 with VS 2010



QtDevlopper
19th February 2014, 14:45
Hello every body,

I use Microsoft windows Seven 64 bit OS, I installed Qt 4.8.5, visual studio 2010 Ultimate and oracle 11g 64 bits.

I followed all the steps mentionned in the Qt documentation (http://qt-project.org/doc/qt-4.8/sql-driver.html#qoci) :

set INCLUDE=%INCLUDE%;C:/app/product/11.2.0/dbhome_1/oci/include
set LIB=%LIB%;C:/app/product/11.2.0/dbhome_1/oci/lib/MSVC
set PATH=%PATH%;C:/app/product/11.2.0/dbhome_1/BIN
cd C:/Qt/4.8.5/src/plugins/sqldrivers/oci
qmake -o Makefile oci.pro
nmake

nmake returns linking problems :

link /LIBPATH:"c:\Qt\4.8.5\lib" /NOLOGO /DYNAMICBASE /NXCOMPAT /DEBUG /DLL /MANIFEST /MANIFESTFILE:"debug\qsqlocid.intermediate.manifest" /VERSION:4.85 /OUT:debug\qsqlocid4.dll @C:\Users\Lassoued\AppData\Local\Temp\nm2153.tmp
Création de la bibliothèque debug\qsqlocid4.lib et de l'objet debug\qsqlocid4.exp
qsql_oci.obj : error LNK2019: symbole externe non résolu _OCIDescriptorAlloc référencé dans la fonction "public: __thiscall QOCIRowId::QOCIRowId(struct OCIEnv *)" (??0QOCIRowId@@QAE@PAUOCIEnv@@@Z)
qsql_oci.obj : error LNK2019: symbole externe non résolu _OCIDescriptorFree référencé dans la fonction "public: __thiscall QOCIRowId::~QOCIRowId(void)" (??1QOCIRowId@@QAE@XZ)
qsql_oci.obj : error LNK2019: symbole externe non résolu _OCIAttrSet référencé dans la fonction "public: void __thiscall QOCIResultPrivate::setStatementAttributes(void)" (?setStatementAttributes@QOCIResultPrivate@@QAEXXZ )
qsql_oci.obj : error LNK2019: symbole externe non résolu _OCIBindByPos référencé dans la fonction "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@@PAP AUOCIBind@@PAUOCIError@@HABVQVariant@@PAXPAGAAV?$Q List@VQByteArray@@@@@Z)
qsql_oci.obj : error LNK2019: symbole externe non résolu _OCIHandleAlloc référencé dans la fonction "public: void __thiscall QOCIDriverPrivate::allocErrorHandle(void)" (?allocErrorHandle@QOCIDriverPrivate@@QAEXXZ)
qsql_oci.obj : error LNK2019: symbole externe non résolu _OCINumberFromInt référencé dans la fonction "class QByteArray __cdecl qMakeOCINumber(__int64 const &,struct OCIError *)" (?qMakeOCINumber@@YA?AVQByteArray@@AB_JPAUOCIError @@@Z)
qsql_oci.obj : error LNK2019: symbole externe non résolu _OCINumberToInt référencé dans la fonction "__int64 __cdecl qMakeLongLong(char const *,struct OCIError *)" (?qMakeLongLong@@YA_JPBDPAUOCIError@@@Z)
qsql_oci.obj : error LNK2019: symbole externe non résolu _OCIDefineByPos référencé dans la fonction "public: __thiscall QOCICols::QOCICols(int,struct QOCIResultPrivate *)" (??0QOCICols@@QAE@HPAUQOCIResultPrivate@@@Z)
qsql_oci.obj : error LNK2019: symbole externe non résolu _OCIParamGet référencé dans la fonction "public: __thiscall QOCICols::QOCICols(int,struct QOCIResultPrivate *)" (??0QOCICols@@QAE@HPAUQOCIResultPrivate@@@Z)
qsql_oci.obj : error LNK2019: symbole externe non résolu _OCIErrorGet référencé dans la fonction "public: int __thiscall QOCICols::readPiecewise(class QVector<class QVariant> &,int)" (?readPiecewise@QOCICols@@QAEHAAV?$QVector@VQVaria nt@@@@H@Z)
qsql_oci.obj : error LNK2019: symbole externe non résolu _OCIStmtFetch référencé dans la fonction "public: int __thiscall QOCICols::readPiecewise(class QVector<class QVariant> &,int)" (?readPiecewise@QOCICols@@QAEHAAV?$QVector@VQVaria nt@@@@H@Z)
qsql_oci.obj : error LNK2019: symbole externe non résolu _OCIStmtSetPieceInfo référencé dans la fonction "public: int __thiscall QOCICols::readPiecewise(class QVector<class QVariant> &,int)" (?readPiecewise@QOCICols@@QAEHAAV?$QVector@VQVaria nt@@@@H@Z)
qsql_oci.obj : error LNK2019: symbole externe non résolu _OCIStmtGetPieceInfo référencé dans la fonction "public: int __thiscall QOCICols::readPiecewise(class QVector<class QVariant> &,int)" (?readPiecewise@QOCICols@@QAEHAAV?$QVector@VQVaria nt@@@@H@Z)
qsql_oci.obj : error LNK2019: symbole externe non résolu _OCIAttrGet référencé dans la fonction "private: struct OraFieldInfo __thiscall QOCICols::qMakeOraField(struct QOCIResultPrivate const *,struct OCIParam *)const " (?qMakeOraField@QOCICols@@ABE?AUOraFieldInfo@@PBUQ OCIResultPrivate@@PAUOCIParam@@@Z)
qsql_oci.obj : error LNK2019: symbole externe non résolu _OCIStmtExecute référencé dans la fonction "public: static bool __cdecl QOCICols::execBatch(struct QOCIResultPrivate *,class QVector<class QVariant> &,bool)" (?execBatch@QOCICols@@SA_NPAUQOCIResultPrivate@@AA V?$QVector@VQVariant@@@@_N@Z)
qsql_oci.obj : error LNK2019: symbole externe non résolu _OCIBindArrayOfStruct référencé dans la fonction "public: static bool __cdecl QOCICols::execBatch(struct QOCIResultPrivate *,class QVector<class QVariant> &,bool)" (?execBatch@QOCICols@@SA_NPAUQOCIResultPrivate@@AA V?$QVector@VQVariant@@@@_N@Z)
qsql_oci.obj : error LNK2019: symbole externe non résolu _OCIHandleFree référencé dans la fonction "public: __thiscall QOCIResultPrivate::~QOCIResultPrivate(void)" (??1QOCIResultPrivate@@QAE@XZ)
qsql_oci.obj : error LNK2019: symbole externe non résolu _OCIStmtPrepare référencé dans la fonction "public: virtual bool __thiscall QOCIResult:: prepare(class QString const &)" (?prepare@QOCIResult@@UAE_NABVQString@@@Z)
qsql_oci.obj : error LNK2019: symbole externe non résolu _OCIEnvCreate référencé dans la fonction "public: __thiscall QOCIDriver::QOCIDriver(class QObject *)" (??0QOCIDriver@@QAE@PAVQObject@@@Z)
qsql_oci.obj : error LNK2019: symbole externe non résolu _OCIServerVersion référencé dans la fonction "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)
qsql_oci.obj : error LNK2019: symbole externe non résolu _OCISessionBegin référencé dans la fonction "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)
qsql_oci.obj : error LNK2019: symbole externe non résolu _OCIServerAttach référencé dans la fonction "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)
qsql_oci.obj : error LNK2019: symbole externe non résolu _OCIServerDetach référencé dans la fonction "public: virtual void __thiscall QOCIDriver::close(void)" (?close@QOCIDriver@@UAEXXZ)
qsql_oci.obj : error LNK2019: symbole externe non résolu _OCISessionEnd référencé dans la fonction "public: virtual void __thiscall QOCIDriver::close(void)" (?close@QOCIDriver@@UAEXXZ)
qsql_oci.obj : error LNK2019: symbole externe non résolu _OCITransStart référencé dans la fonction "protected: virtual bool __thiscall QOCIDriver::beginTransaction(void)" (?beginTransaction@QOCIDriver@@MAE_NXZ)
qsql_oci.obj : error LNK2019: symbole externe non résolu _OCITransCommit référencé dans la fonction "protected: virtual bool __thiscall QOCIDriver::commitTransaction(void)" (?commitTransaction@QOCIDriver@@MAE_NXZ)
qsql_oci.obj : error LNK2019: symbole externe non résolu _OCITransRollback référencé dans la fonction "protected: virtual bool __thiscall QOCIDriver::rollbackTransaction(void)" (?rollbackTransaction@QOCIDriver@@MAE_NXZ)
qsql_oci.obj : error LNK2019: symbole externe non résolu _OCILobRead référencé dans la fonction "int __cdecl qReadLob<class QString,2>(class QString &,struct QOCIResultPrivate const *,struct OCILobLocator *)" (??$qReadLob@VQString@@$01@@YAHAAVQString@@PBUQOCI ResultPrivate@@PAUOCILobLocator@@@Z)
qsql_oci.obj : error LNK2019: symbole externe non résolu _OCILobGetLength référencé dans la fonction "int __cdecl qReadLob<class QString,2>(class QString &,struct QOCIResultPrivate const *,struct OCILobLocator *)" (??$qReadLob@VQString@@$01@@YAHAAVQString@@PBUQOCI ResultPrivate@@PAUOCILobLocator@@@Z)
qsql_oci.obj : error LNK2019: symbole externe non résolu _OCILobCharSetForm référencé dans la fonction "int __cdecl qReadLob<class QString,2>(class QString &,struct QOCIResultPrivate const *,struct OCILobLocator *)" (??$qReadLob@VQString@@$01@@YAHAAVQString@@PBUQOCI ResultPrivate@@PAUOCILobLocator@@@Z)
debug\qsqlocid4.dll : fatal error LNK1120: 30 externes non résolus

I tried many solutions that i found in google :

- #include "C:/app/product/11.2.0/dbhome_1/OCI/include/oci.h" in qsql_oci.cpp
- LIBS += -LD:/app/product/11.2.0/dbhome_1/oci/lib/MSVC -loci in oci.pro
- INCLUDEPATH += D:/app/product/11.2.0/dbhome_1/oci/include in oci.pro

can you help me please, its urgent.

Thank you.

jcwsw129
5th December 2015, 00:25
I solved this problem with 64-bit Qt. I think you are using 32-bit Qt.