[Qt] How to get rid of OCI.dll dependency when compiling static
- by STL
Hi,
My application accesses an Oracle database through Qt's QSqlDatabase class.
I'm compiling Qt as static for the release build, but I can't seem to be able to get rid of OCI.dll dependency. I'm trying to link against oci.lib (as available in Oracle's Instant Client with SDK).
Here's my configure line :
configure -qt-libjpeg -qt-zlib -qt-libpng -nomake examples -nomake demos -no-exceptions -no-stl -no-rtti -no-qt3support -no-scripttools -no-openssl -no-opengl -no-phonon -no-style-motif -no-style-cde -no-style-cleanlooks -no-style-plastique -static -release -opensource -plugin-sql-oci -plugin-sql-sqlite -platform win32-msvc2005
I link against oci.h and oci.lib in the SDK's folder by using :
set INCLUDE=C:\oracle\instantclient\sdk\include;%INCLUDE%
set LIB=C:\oracle\instantclient\sdk\lib\msvc;%LIB%
Then, once Qt is compiled, I use the following lines in my *.pro file :
QT += sql
CONFIG += static
LIBS += C:\oracle\instantclient\sdk\lib\msvc\oci.lib
QTPLUGIN += qsqloci
Then, in my main.cpp, I add the following commands to statically compile OCI plugin in the application :
#include <QtPlugin>
Q_IMPORT_PLUGIN(qsqloci)
After compiling the project, I test it on my workstation and it works (as I have Oracle Instant Client installed). When I try on another workstation, I always get the message:
This application has failed to start
because OCI.dll was not found.
Re-installing this application may fix
this problem.
I don't understand why I still need OCI.dll, as my statically linked application is supposed to link to oci.lib instead.
Is there any Qt people here that might have a solution for me ?
Thanks a lot !
STL