Making an OCI (Oracle call interface) driver



  • Hello!

    Qt 5.4
    mingw491_32
    (tried also on the Qt 5.3)
    OS Windows 8.1

    I've got some trouble with compiling an OCI driver.
    As it was told by instructions:

    @ set INCLUDE=%INCLUDE%;c:\oracle\oci\include
    set LIB=%LIB%;c:\oracle\oci\lib\msvc
    cd %QTDIR%\src\plugins\sqldrivers\oci
    qmake oci.pro
    nmake@

    Firstly, i don.t have path exactly like \src\plugins\sqldrivers\oci
    instead, i have these ones:
    D:\apps\qtthenew\5.4\Src
    D:\apps\qtthenew\5.4\mingw491_32\plugins\sqldrivers

    However, i don't seem to have either oci folder or oci.pro file.
    i tried just to create a folder, move there and then run qmake oci.pro, but i am told that it can't find a file oci.pro
    Gererally, my folder \sqldrivers has only some drivers and no filders.

    By the way, should i set in include and lib links to oracle server libs or oracle client? A have the same folders in both ones.


  • Lifetime Qt Champion

    Hi and welcome to devnet,

    You need to first retrieve the Qt sources, then you'll be able to go further



  • [quote author="SGaist" date="1423570632"]Hi and welcome to devnet,

    You need to first retrieve the Qt sources, then you'll be able to go further[/quote]

    Thanks a lot
    I'm now downloading from https://qt.gitorious.org/qt, qt/digia-qt repository
    am i right?

    So should i then use copy the required files to my Qt installed folder, to the path %QTDIR%src\plugins\sqldrivers\oci ?



  • a new problem

    it was OK until i ran mingw32-make
    i tried to find the files it can't do but i failed

    @D:\apps\qtthenew\5.4\Src\plugins\sqldrivers\oci>mingw32-make
    mingw32-make -f Makefile.Release
    mingw32-make[1]: Entering directory 'D:/apps/qtthenew/5.4/Src/plugins/sqldrivers
    /oci'
    g++ -c -pipe -fno-keep-inline-dllexport -O2 -frtti -Wall -Wextra -fexceptions -m
    threads -DUNICODE -DQT_NO_CAST_TO_ASCII -DQT_NO_CAST_FROM_ASCII -DQT_NO_DEBUG -D
    QT_PLUGIN -DQT_SQL_LIB -DQT_CORE_LIB -I. -I"........\mingw491_32\include" -I"
    ........\mingw491_32\include\QtSql" -I"........\mingw491_32\include\QtCore
    " -I"release" -I"........\mingw491_32\mkspecs\win32-g++" -o release\main.o ma
    in.cpp
    In file included from main.cpp:44:0:
    ../../../sql/drivers/oci/qsql_oci.h:47:46: fatal error: QtSql/private/qsqlcached
    result_p.h: No such file or directory
    #include <QtSql/private/qsqlcachedresult_p.h>
    ^
    compilation terminated.
    Makefile.Release:280: recipe for target 'release/main.o' failed
    mingw32-make[1]: *** [release/main.o] Error 1
    mingw32-make[1]: Leaving directory 'D:/apps/qtthenew/5.4/Src/plugins/sqldrivers/
    oci'
    makefile:34: recipe for target 'release' failed
    mingw32-make: *** [release] Error 2@



  • i solved this as mentioned in "http://stackoverflow.com/questions/17601662/how-to-build-qt-qoci-oracle-database-driver-on-windows-with-mingw"

    now i received the next message:
    @
    D:\apps\qtthenew\5.4\Src\plugins\sqldrivers\oci>mingw32-make
    mingw32-make -f Makefile.Release
    mingw32-make[1]: Entering directory 'D:/apps/qtthenew/5.4/Src/plugins/sqldrivers
    /oci'
    g++ -c -pipe -fno-keep-inline-dllexport -O2 -frtti -Wall -Wextra -fexceptions -m
    threads -DUNICODE -DQT_NO_CAST_TO_ASCII -DQT_NO_CAST_FROM_ASCII -DQT_NO_DEBUG -D
    QT_PLUGIN -DQT_SQL_LIB -DQT_CORE_LIB -I. -I"........\mingw491_32\include" -I"
    ........\mingw491_32\include\QtSql" -I"........\mingw491_32\include\QtCore
    " -I"release" -I"........\mingw491_32\mkspecs\win32-g++" -I"D:\OClient\produc
    t\11.2.0\client_1\oci\include" -I"D:\OClient\product\11.2.0\client_1\oci\lib\msv
    c" -o release\main.o main.cpp
    In file included from ........\mingw491_32\include/QtCore/qnamespace.h:37:0,
    from ........\mingw491_32\include/QtCore/qobjectdefs.h:41,
    from ........\mingw491_32\include/QtCore/qobject.h:40,
    from ........\mingw491_32\include/QtCore/qplugin.h:37,
    from ........\mingw491_32\include\QtSql/qsqldriverplugin.h:3
    7,
    from main.cpp:42:
    ........\mingw491_32\include/QtCore/qglobal.h:694:5: error: expected construc
    tor, destructor, or type conversion before 'enum'
    enum {Q_STATIC_ASSERT_PRIVATE_JOIN(q_static_assert_result, COUNTER) = s
    izeof(QStaticAssertFailure<!!(Condition)>)}
    ^
    ........\mingw491_32\include/QtCore/qglobal.h:699:47: note: in expansion of m
    acro 'Q_STATIC_ASSERT'
    #define Q_STATIC_ASSERT_X(Condition, Message) Q_STATIC_ASSERT(Condition)
    ^
    ........\mingw491_32\include/QtCore/qplugin.h:136:5: note: in expansion of ma
    cro 'Q_STATIC_ASSERT_X'
    Q_STATIC_ASSERT_X(false, "Old plugin system used")
    ^
    main.cpp:80:1: note: in expansion of macro 'Q_EXPORT_PLUGIN2'
    Q_EXPORT_PLUGIN2(qsqloci, QOCIDriverPlugin)
    ^
    Makefile.Release:282: recipe for target 'release/main.o' failed
    mingw32-make[1]: *** [release/main.o] Error 1
    mingw32-make[1]: Leaving directory 'D:/apps/qtthenew/5.4/Src/plugins/sqldrivers/
    oci'
    makefile:34: recipe for target 'release' failed
    mingw32-make: *** [release] Error 2@


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.