静态编译过程:
运行环境xp sp3,从官网下载了qt-everywhere-opensource-src-4.7.4.zip并解压到e:\Qt4.7.4\,根据网上的说明如下设置
修改..\mkspecs\win32-msvc2010\qmake.conf中:
- QMAKE_CFLAGS_RELEASE = -O2 -MT
- QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MT -Zi
- QMAKE_CFLAGS_DEBUG = -Zi -MTd
在PATH环境变量中添加:”e:\Qt4.7.4\″
添加新的环境变量,名字为”QMAKESPEC”,值为”win32-msvc2010″
添加新的环境变量,名字为”QTDIRnew”,值为”e:\Qt4.7.4\″(我原来已有4.7.3非静态版本)
然后进入Visual StudioCommand Prompt (2010)
跳转到e:\Qt4.7.4\
设定
- set INCLUDE=%INCLUDE%;D:/Work/Oracle_10.2_client/oci/include
- set LIB=%LIB%;D:/Work/Oracle_10.2_client/oci/lib
输入
- configure –platform win32-msvc2010 -debug-and-release -opensource -static -fast -qt-sql-oci -plugin-sql-oci -qt-sql-odbc -plugin-sql-odbc -qt-sql-sqlite -plugin-sql-sqlite -no-qt3support -qt-zlib -qt-gif -qt-libpng -qt-libmng -qt-libtiff -qt-libjpeg -no-webkit -qt-style-windowsxp -qt-style-windowsvista -nomake examples –nomake docs -nomake demos
提示确定后输入y
Configure成功后nmake,无提示错误完成
然后将e:\Qt4.7.4\\bin\qmake.exe添加到工具\选项\qt4\qt版本
测试过程:
这样设置后我的工程中除去oracle相关部分生成的debug中的exe文件可以在server2003中正常工作,添加了oracle部分后
提示qoci driver not loaded采用网上的测试代码- #include <QtCore/QCoreApplication>
- #include <QSqlDatabase>
- #include <QStringList>
- #include <QDebug>
- int main(int argc, char *argv[])
- {
- QCoreApplication a(argc, argv);
- qDebug() << "Available drivers:";
- QStringList drivers = QSqlDatabase::drivers();
- foreach(QString driver, drivers)
- qDebug() << "\t" << driver;
- QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
- qDebug() << "ODBC driver valid?" << db.isValid();
- QString str=",,,,";
- if(str.indexOf(",,")==0)
- str="-010";
- str.insert(3,".");
- float tempR=str.toFloat();
- qDebug()<<tempR;
- return a.exec();
- }
我原来的qt4.7.3未静态编译版本显示Available drivers:“qsqlite”“qoci8”“qoci”“qodbc3”“qodbc”ODBC driver valid? True-1
现在的qt4.7.4静态版本显示Available drivers:QSqlDatabase: QODBC driver not loadedQSqlDatabase:available drivers:ODBC driver valid? False-1 问题:根据上述测试验证,是指完全没有静态编译成功qsqlite、qodbc、qoci其中的任何一个?原因是什么呢…后来自己又单独用src\plugin\sqldrivers\oci 里的oci.pro用4.7.4静态版本试图生成lib文件,原来4.7.3中这么做最后提示qsqloci.exe启动中、无法启动进程,系统找不到制定的文件但是生成的qsqlocid4.dll和qsqlocid4.lib放入sqldriver文件夹后oracle工程可用现在4.7.4静态版本提示无法找到执行档,请指定一个生成了的debug_static中只有obj文件 So苦恼中,如何静态编译qoci或者原有的动态版本附加那些dll可以在无oracle的机器上使用?网上没找到,于是来求诸位大牛援手,多谢!