2012-01-04 186 views
0

我试图在WinXp上使用Qt连接Oracle数据库。为了在Qt指令后面使用QSql,我下载了构建用于数据库访问的Qt插件所需的源代码(我需要QOCI)。据Qt文档我应该运行以下命令:Qt building OCI插件

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 

,但我得到了以下错误:

C:\QtSDK\Desktop\Qt\4.7.4\mingw\src\plugins\sqldrivers\oci>mingw32-make 
mingw32-make -f MakeFile.Debug 
mingw32-make[1]: Entering directory `C:/QtSDK/Desktop/Qt/4.7.4/mingw/src/plugins/sqldrivers/oci' 
g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_NO_CAST_TO_ASCII -DQT_NO_CAST_FROM_ASCII -DQT_DLL -DQT_PLUGIN -DQT_SQL_LIB -DQT_CORE_L 
IB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -I"..\..\..\..\include\QtCore" -I"..\..\..\..\include\QtSql" -I"..\..\. 
.\..\include" -I"..\..\..\..\include\ActiveQt" -I"debug" -I"..\..\..\..\mkspecs\default" -o debug\main.o main.cpp 
In file included from main.cpp:44: 
../../../sql/drivers/oci/qsql_oci.h:47:46: error: QtSql/private/qsqlcachedresult_p.h: No such file or directory 
In file included from main.cpp:44: 
../../../sql/drivers/oci/qsql_oci.h:68: error: expected class-name before '{' token 
../../../sql/drivers/oci/qsql_oci.h:80: error: 'ValueCache' has not been declared 
mingw32-make[1]: *** [debug/main.o] Error 1 
mingw32-make[1]: Leaving directory `C:/QtSDK/Desktop/Qt/4.7.4/mingw/src/plugins/sqldrivers/oci' 
mingw32-make: *** [debug] Error 2 

回答

1

我找到了答案。 Oracle不支持mingw编译器,Qt插件必须使用msvc编译。

1

它无法找到位于 C:\Qt\SDK\Desktop\Qt\4.7.4\mingw\include头。它看起来像makefile认为它在 /sql/drivers/而不是 /sqldrivers/。有几种方法可以解决这个问题,我不知道错误在于插件的发布还是Qt移动了它们。

编辑: 那么,第一点是没有错,因此,我不认为它的整个故事。当使用Qt Creator下载头文件时,它们具有与Qt source下载时不同的目录结构。

我编辑的建议是找到正确版本的源代码,下载它,然后尝试用它来构建。你将不得不弄清楚自己应该在哪里(因为我以前从未构建过插件),但在构建源代码时你应该有更好的运气!

+0

正如我检查qsqlcachedresult_p.h只位于C:\ QtSDK \ QtSources \ 4.7.4 \ src \ sql \ kernel。我试图用msvc编译 - 它给出了相同的结果。 – evgvg 2012-01-05 13:38:41