Плагин Qt building OCI
Я пытаюсь подключиться к базе данных Oracle с помощью Qt на WinXp. Чтобы использовать QSql, следуя инструкции Qt, я скачал исходный код, необходимый для сборки плагинов Qt для доступа к БД (мне нужен QOCI). Согласно документации Qt я должен выполнить следующее:
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
2 ответа
Я нашел ответ. Oracle не поддерживает компилятор mingw, и плагин для Qt должен быть собран с msvc.
Он не может найти заголовки, расположенные в C:\Qt\SDK\Desktop\Qt\4.7.4\mingw\include
, Похоже, что Makefile думает, что это в /sql/drivers/
скорее, чем /sqldrivers/
, Есть несколько способов исправить это, и я не знаю, связана ли ошибка с выпуском плагина или Qt их переместил.
Редактировать: Хорошо, что первый бит не так, как таковой, но я не думаю, что вся история. Заголовки имеют другую структуру каталогов при загрузке с Qt Creator, как и при загрузке в качестве источника Qt.
Мой отредактированный совет - найти правильную версию исходного кода, скачать ее и попробовать создать ее вместо этого. Вам придется выяснить, где в иерархии это должно быть (как я никогда раньше не создавал плагин), но вам лучше повезет при сборке с исходным кодом!