crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

3 страниц V   1 2 3 >  
Ответить в данную темуНачать новую тему
> Сборка OCI драйвера из имеющихся исходников.
Гость_PavelDart_*
сообщение 21.11.2009, 23:33
Сообщение #1





Гости








    


Доброго времени суток.
Очень надо собрать драйвера для оракла на qt 4.3.4.
Наткнулся на исходники драйвера oci (здесь)
Скопировал полученнные файлы(Makefile, qsql_oracle.cpp, qsql_oracle.h, QSqlOracleDriverPlugin.cpp, QSqlOracleDriverPlugin.h, qsqloracleqt4.pro) в %QTPATH%\src\plugins\sqldrivers\oci\

далее:

qmake qsqloracleqt4.pro
make

qsql_oracle.cpp:35:23: qsqlerror.h: No such file or directory
qsql_oracle.cpp:36:23: qsqlfield.h: No such file or directory
qsql_oracle.cpp:37:23: qsqlindex.h: No such file or directory
qsql_oracle.cpp:38:24: qsqlrecord.h: No such file or directory
qsql_oracle.cpp:39:23: qsqlquery.h: No such file or directory
qsql_oracle.cpp:47: error: `struct QSqlError::ErrorType' has not been declared
qsql_oracle.cpp:48: error: ISO C++ forbids declaration of `type' with no type
qsql_oracle.cpp: In function `QSqlError qMakeError(const QString&, int, QOracleDriver*)':
qsql_oracle.cpp:48: error: return type `struct QSqlError' is incomplete
qsql_oracle.cpp:51: error: invalid use of undefined type `struct QSqlError'
../../../../include/QtSql/../../src/sql/kernel/qsqldatabase.h:57: error: forward declaration of `struct QSqlError'
qsql_oracle.cpp: In member function `bool QOracleResult::processResults()':
qsql_oracle.cpp:479: error: incomplete type `QSqlError' used in nested name specifier
qsql_oracle.cpp: In member function `virtual QSqlRecord QOracleResult::record() const':
qsql_oracle.cpp:485: error: return type `struct QSqlRecord' is incomplete
qsql_oracle.cpp:487: error: aggregate `QSqlRecord info' has incomplete type and cannot be defined
qsql_oracle.cpp:491: error: invalid use of undefined type `struct QSqlField'
../../../../include/QtSql/../../src/sql/kernel/qsqldriver.h:62: error: forward declaration of `struct QSqlField'
qsql_oracle.cpp:493: confused by earlier errors, bailing out
mingw32-make[1]: *** [tmp/obj/debug_shared/qsql_oracle.o] Error 1
mingw32-make[1]: Leaving directory `E:/Qt/4.3.4/src/plugins/sqldrivers/oci'
mingw32-make: *** [debug] Error 2

make debug

qsql_oracle.cpp:35:23: qsqlerror.h: No such file or directory
qsql_oracle.cpp:36:23: qsqlfield.h: No such file or directory
qsql_oracle.cpp:37:23: qsqlindex.h: No such file or directory
qsql_oracle.cpp:38:24: qsqlrecord.h: No such file or directory
qsql_oracle.cpp:39:23: qsqlquery.h: No such file or directory
qsql_oracle.cpp:47: error: `struct QSqlError::ErrorType' has not been declared
qsql_oracle.cpp:48: error: ISO C++ forbids declaration of `type' with no type
qsql_oracle.cpp: In function `QSqlError qMakeError(const QString&, int, QOracleDriver*)':
qsql_oracle.cpp:48: error: return type `struct QSqlError' is incomplete
qsql_oracle.cpp:51: error: invalid use of undefined type `struct QSqlError'
../../../../include/QtSql/../../src/sql/kernel/qsqldatabase.h:57: error: forward declaration of `struct QSqlError'
qsql_oracle.cpp: In member function `bool QOracleResult::processResults()':
qsql_oracle.cpp:479: error: incomplete type `QSqlError' used in nested name specifier
qsql_oracle.cpp: In member function `virtual QSqlRecord QOracleResult::record() const':
qsql_oracle.cpp:485: error: return type `struct QSqlRecord' is incomplete
qsql_oracle.cpp:487: error: aggregate `QSqlRecord info' has incomplete type and cannot be defined
qsql_oracle.cpp:491: error: invalid use of undefined type `struct QSqlField'
../../../../include/QtSql/../../src/sql/kernel/qsqldriver.h:62: error: forward declaration of `struct QSqlField'
qsql_oracle.cpp:493: confused by earlier errors, bailing out
mingw32-make[1]: *** [tmp/obj/debug_shared/qsql_oracle.o] Error 1

Получается неполная подборка исходников?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Rocky
  опции профиля:
сообщение 21.11.2009, 23:59
Сообщение #2


Старейший участник
****

Группа: Участник
Сообщений: 530
Регистрация: 22.12.2008
Из: Санкт-Петербург
Пользователь №: 463

Спасибо сказали: 22 раз(а)




Репутация:   7  


А сами QT-шные хидеры есть вообще? %QTPATH%\include\...

Имею в виду qsqlerror.h qsqlfield.h и пр

Сообщение отредактировал Rocky - 21.11.2009, 23:59
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 21.11.2009, 23:59
Сообщение #3


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(Гость_PavelDart_* @ 22.11.2009, 2:33) *
qsqlerror.h: No such file or directory
похоже, что с файлом проекта лажа какая-то, может не подключен модуль sql
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_PavelDart_*
сообщение 22.11.2009, 0:05
Сообщение #4





Гости








    


Цитата(Rocky @ 21.11.2009, 23:59) *
А сами QT-шные хидеры есть вообще? %QTPATH%\include\...

Имею в виду qsqlerror.h qsqlfield.h и пр


На месте. Сейчас пути ещё раз проверю.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_PavelDart_*
сообщение 22.11.2009, 0:14
Сообщение #5





Гости








    


Скопировал файлы, которые не обнаруживались.
Сейчас имею:

C:\MinGW\bin\..\lib\gcc\mingw32\3.4.2\..\..\..\..\mingw32\bin\ld.exe: cannot find -lclntsh
collect2: ld returned 1 exit status
mingw32-make[1]: *** [debug\qsqloracleqt4.dll] Error 1
mingw32-make[1]: Leaving directory `E:/Qt/4.3.4/src/plugins/sqldrivers/oci'
mingw32-make: *** [debug] Error 2


-lclntsh - прописан в про-файле. Не разобрался что за зверь - решил оставить.

TEMPLATE = lib
CONFIG += qt plugin thread debug
HEADERS = qsql_oracle.h QSqlOracleDriverPlugin.h
SOURCES = qsql_oracle.cpp QSqlOracleDriverPlugin.cpp
INCLUDEPATH += O:\oraclexe\app\oracle\product\10.2.0\server\OCI\include
LIBPATH += O:\oraclexe\app\oracle\product\10.2.0\server\OCI\lib\MSVC
LIBS += -lclntsh -lQtSql


Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_PavelDart_*
сообщение 22.11.2009, 0:26
Сообщение #6





Гости








    


Немного поэкспериментировал - убрал -lclntsh
Получилось:

C:\MinGW\bin\..\lib\gcc\mingw32\3.4.2\..\..\..\..\mingw32\bin\ld.exe: cannot find -lQtGuid4
collect2: ld returned 1 exit status
mingw32-make[1]: *** [debug\qsqloracleqt4.dll] Error 1
mingw32-make[1]: Leaving directory `E:/Qt/4.3.4/src/plugins/sqldrivers/oci'
mingw32-make: *** [debug] Error 2


Ключи в строчке LIBS как работают? что описывают?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 22.11.2009, 2:48
Сообщение #7


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(Гость_PavelDart_* @ 22.11.2009, 3:14) *
Скопировал файлы, которые не обнаруживались.
откуда и куда ты их скопировал?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_PavelDart_*
сообщение 22.11.2009, 8:02
Сообщение #8





Гости








    


Цитата(Litkevich Yuriy @ 22.11.2009, 2:48) *
Цитата(Гость_PavelDart_* @ 22.11.2009, 3:14) *
Скопировал файлы, которые не обнаруживались.
откуда и куда ты их скопировал?

[quote name='Rocky' date='21.11.2009, 23:59' post='26868']
%QTPATH%\include\...

Имею в виду qsqlerror.h qsqlfield.h и пр
[/quote
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_PavelDart_*
сообщение 22.11.2009, 8:34
Сообщение #9





Гости








    


Проделал вот такой фокус:
1.В pro-файле прописал пути до qt-шных lib и include
2.переименовал имеющиеся в lib libQtGui4.a -> libQtGuid4.a, libQtCore4.a ->libQtCored4.a

линкер ругаться на отсутствие файлов соответственно перестал, но выдал вот такую прорву:
Раскрывающийся текст

Creating library file: debug\libqsqloracleqt4.a
tmp/obj/debug_shared/qsql_oracle.o(.text+0x89b): In function `ZN13QOracleResult7cleanupEv':
E:/Qt/4.3.4/src/plugins/sqldrivers/oci/qsql_oracle.cpp:125: undefined reference to `OCIHandleFree'
tmp/obj/debug_shared/qsql_oracle.o(.text+0x901): In function `ZN13QOracleDriver14cleanupSessionEv':
E:/Qt/4.3.4/src/plugins/sqldrivers/oci/qsql_oracle.cpp:137: undefined reference to `OCIHandleFree'
tmp/obj/debug_shared/qsql_oracle.o(.text+0x92a):E:/Qt/4.3.4/src/plugins/sqldrivers/oci/qsql_oracle.cpp:142: undefined reference to `OCIHandleFree'
tmp/obj/debug_shared/qsql_oracle.o(.text+0x966): In function `ZN13QOracleDriver7cleanupEv':
E:/Qt/4.3.4/src/plugins/sqldrivers/oci/qsql_oracle.cpp:152: undefined reference to `OCIHandleFree'
tmp/obj/debug_shared/qsql_oracle.o(.text+0x98f):E:/Qt/4.3.4/src/plugins/sqldrivers/oci/qsql_oracle.cpp:157: undefined reference to `OCIHandleFree'
tmp/obj/debug_shared/qsql_oracle.o(.text+0x9b8):E:/Qt/4.3.4/src/plugins/sqldrivers/oci/qsql_oracle.cpp:162: more undefined references to `OCIHandleFree' follow
tmp/obj/debug_shared/qsql_oracle.o(.text+0xa19): In function `ZN13QOracleResult5fetchEi':
E:/Qt/4.3.4/src/plugins/sqldrivers/oci/qsql_oracle.cpp:176: undefined reference to `OCIStmtFetch2'
tmp/obj/debug_shared/qsql_oracle.o(.text+0xa8b): In function `ZN13QOracleResult10fetchFirstEv':
E:/Qt/4.3.4/src/plugins/sqldrivers/oci/qsql_oracle.cpp:191: undefined reference to `OCIStmtFetch2'
tmp/obj/debug_shared/qsql_oracle.o(.text+0xb07): In function `ZN13QOracleResult9fetchLastEv':
E:/Qt/4.3.4/src/plugins/sqldrivers/oci/qsql_oracle.cpp:205: undefined reference to `OCIStmtFetch2'
tmp/obj/debug_shared/qsql_oracle.o(.text+0xbbe): In function `ZN13QOracleResult13getCurrentRowEv':
E:/Qt/4.3.4/src/plugins/sqldrivers/oci/qsql_oracle.cpp:219: undefined reference to `OCIAttrGet'
tmp/obj/debug_shared/qsql_oracle.o(.text+0x12df): In function `ZN13QOracleResult4dataEi':
E:/Qt/4.3.4/src/plugins/sqldrivers/oci/qsql_oracle.cpp:265: undefined reference to `OCINumberToReal'
tmp/obj/debug_shared/qsql_oracle.o(.text+0x2479): In function `ZN13QOracleResult5resetERK7QString':
E:/Qt/4.3.4/src/plugins/sqldrivers/oci/qsql_oracle.cpp:391: undefined reference to `OCIHandleAlloc'
tmp/obj/debug_shared/qsql_oracle.o(.text+0x256e):E:/Qt/4.3.4/src/plugins/sqldrivers/oci/qsql_oracle.cpp:397: undefined reference to `OCIAttrSet'
tmp/obj/debug_shared/qsql_oracle.o(.text+0x274b):E:/Qt/4.3.4/src/plugins/sqldrivers/oci/qsql_oracle.cpp:404: undefined reference to `OCIStmtPrepare'
tmp/obj/debug_shared/qsql_oracle.o(.text+0x298e): In function `ZN13QOracleResult15numRowsAffectedEv':
E:/Qt/4.3.4/src/plugins/sqldrivers/oci/qsql_oracle.cpp:441: undefined reference to `OCIAttrGet'
tmp/obj/debug_shared/qsql_oracle.o(.text+0x2df9): In function `ZN13QOracleResult4execEv':
E:/Qt/4.3.4/src/plugins/sqldrivers/oci/qsql_oracle.cpp:503: undefined reference to `OCIAttrGet'
tmp/obj/debug_shared/qsql_oracle.o(.text+0x3208): In function `ZN13QOracleResult22executeSelectStatementEv':
E:/Qt/4.3.4/src/plugins/sqldrivers/oci/qsql_oracle.cpp:539: undefined reference to `OCIStmtExecute'
tmp/obj/debug_shared/qsql_oracle.o(.text+0x32f7):E:/Qt/4.3.4/src/plugins/sqldrivers/oci/qsql_oracle.cpp:545: undefined reference to `OCIAttrGet'
tmp/obj/debug_shared/qsql_oracle.o(.text+0x37e6):E:/Qt/4.3.4/src/plugins/sqldrivers/oci/qsql_oracle.cpp:567: undefined reference to `OCIParamGet'
tmp/obj/debug_shared/qsql_oracle.o(.text+0x3855):E:/Qt/4.3.4/src/plugins/sqldrivers/oci/qsql_oracle.cpp:569: undefined reference to `OCIAttrGet'
tmp/obj/debug_shared/qsql_oracle.o(.text+0x3968):E:/Qt/4.3.4/src/plugins/sqldrivers/oci/qsql_oracle.cpp:577: undefined reference to `OCIAttrGet'
tmp/obj/debug_shared/qsql_oracle.o(.text+0x3ad9):E:/Qt/4.3.4/src/plugins/sqldrivers/oci/qsql_oracle.cpp:587: undefined reference to `OCIAttrGet'
tmp/obj/debug_shared/qsql_oracle.o(.text+0x3c0b):E:/Qt/4.3.4/src/plugins/sqldrivers/oci/qsql_oracle.cpp:598: undefined reference to `OCIAttrGet'
tmp/obj/debug_shared/qsql_oracle.o(.text+0x3c79):E:/Qt/4.3.4/src/plugins/sqldrivers/oci/qsql_oracle.cpp:605: undefined reference to `OCIAttrGet'
tmp/obj/debug_shared/qsql_oracle.o(.text+0x40d8): In function `ZN13QOracleResult9defineRowEv':
E:/Qt/4.3.4/src/plugins/sqldrivers/oci/qsql_oracle.cpp:640: undefined reference to `OCIDefineByPos'
tmp/obj/debug_shared/qsql_oracle.o(.text+0x4391): In function `ZN13QOracleResult25executeNonselectStatementEv':
E:/Qt/4.3.4/src/plugins/sqldrivers/oci/qsql_oracle.cpp:657: undefined reference to `OCIStmtExecute'
tmp/obj/debug_shared/qsql_oracle.o(.text+0x48e2): In function `ZN13QOracleDriver4initEv':
E:/Qt/4.3.4/src/plugins/sqldrivers/oci/qsql_oracle.cpp:693: undefined reference to `OCIEnvCreate'
tmp/obj/debug_shared/qsql_oracle.o(.text+0x49d0):E:/Qt/4.3.4/src/plugins/sqldrivers/oci/qsql_oracle.cpp:699: undefined reference to `OCIHandleAlloc'
tmp/obj/debug_shared/qsql_oracle.o(.text+0x4bad):E:/Qt/4.3.4/src/plugins/sqldrivers/oci/qsql_oracle.cpp:703: undefined reference to `OCIHandleAlloc'
tmp/obj/debug_shared/qsql_oracle.o(.text+0x5556): In function `ZN13QOracleDriver4openERK7QStringS2_S2_S2_iS2_':
E:/Qt/4.3.4/src/plugins/sqldrivers/oci/qsql_oracle.cpp:777: undefined reference to `OCIServerAttach'
tmp/obj/debug_shared/qsql_oracle.o(.text+0x55fb):E:/Qt/4.3.4/src/plugins/sqldrivers/oci/qsql_oracle.cpp:779: undefined reference to `OCIHandleAlloc'
tmp/obj/debug_shared/qsql_oracle.o(.text+0x56f3):E:/Qt/4.3.4/src/plugins/sqldrivers/oci/qsql_oracle.cpp:785: undefined reference to `OCIAttrSet'
tmp/obj/debug_shared/qsql_oracle.o(.text+0x57e1):E:/Qt/4.3.4/src/plugins/sqldrivers/oci/qsql_oracle.cpp:791: undefined reference to `OCIHandleAlloc'
tmp/obj/debug_shared/qsql_oracle.o(.text+0x5914):E:/Qt/4.3.4/src/plugins/sqldrivers/oci/qsql_oracle.cpp:797: undefined reference to `OCIAttrSet'
tmp/obj/debug_shared/qsql_oracle.o(.text+0x5aaf):E:/Qt/4.3.4/src/plugins/sqldrivers/oci/qsql_oracle.cpp:803: undefined reference to `OCIAttrSet'
tmp/obj/debug_shared/qsql_oracle.o(.text+0x5c07):E:/Qt/4.3.4/src/plugins/sqldrivers/oci/qsql_oracle.cpp:809: undefined reference to `OCISessionBegin'
tmp/obj/debug_shared/qsql_oracle.o(.text+0x5cff):E:/Qt/4.3.4/src/plugins/sqldrivers/oci/qsql_oracle.cpp:815: undefined reference to `OCIAttrSet'
tmp/obj/debug_shared/qsql_oracle.o(.text+0x638a): In function `ZN13QOracleDriver16beginTransactionEv':
E:/Qt/4.3.4/src/plugins/sqldrivers/oci/qsql_oracle.cpp:887: undefined reference to `OCIHandleAlloc'
tmp/obj/debug_shared/qsql_oracle.o(.text+0x649d):E:/Qt/4.3.4/src/plugins/sqldrivers/oci/qsql_oracle.cpp:894: undefined reference to `OCIAttrSet'
tmp/obj/debug_shared/qsql_oracle.o(.text+0x6594):E:/Qt/4.3.4/src/plugins/sqldrivers/oci/qsql_oracle.cpp:901: undefined reference to `OCITransStart'
tmp/obj/debug_shared/qsql_oracle.o(.text+0x6883): In function `ZN13QOracleDriver17commitTransactionEv':
E:/Qt/4.3.4/src/plugins/sqldrivers/oci/qsql_oracle.cpp:928: undefined reference to `OCITransCommit'
tmp/obj/debug_shared/qsql_oracle.o(.text+0x69dd): In function `ZN13QOracleDriver19rollbackTransactionEv':
E:/Qt/4.3.4/src/plugins/sqldrivers/oci/qsql_oracle.cpp:953: undefined reference to `OCITransRollback'
tmp/obj/debug_shared/qsql_oracle.o(.text+0x9ac4): In function `ZNK13QOracleDriver6isOpenEv':
E:/Qt/4.3.4/src/plugins/sqldrivers/oci/qsql_oracle.cpp:1148: undefined reference to `OCIAttrGet'
tmp/obj/debug_shared/qsql_oracle.o(.text+0x9dd5): In function `ZN13QOracleDriver12processErrorEiPci7QString':
E:/Qt/4.3.4/src/plugins/sqldrivers/oci/qsql_oracle.cpp:1168: undefined reference to `OCIErrorGet'
tmp/obj/debug_shared/qsql_oracle.o(.text+0xa29e):E:/Qt/4.3.4/src/plugins/sqldrivers/oci/qsql_oracle.cpp:1182: undefined reference to `OCIErrorGet'
collect2: ld returned 1 exit status
mingw32-make[1]: *** [debug\qsqloracleqt4.dll] Error 1
mingw32-make[1]: Leaving directory `E:/Qt/4.3.4/src/plugins/sqldrivers/oci'
mingw32-make: *** [debug] Error 2


Когда создавал драйвера для мускуля тоже спотыкался на создании a-файла, с подобным выводом, этими же ошибками.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 22.11.2009, 14:04
Сообщение #10


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(Гость_PavelDart_* @ 22.11.2009, 11:34) *
PavelDart
Ещё раз и по порядку.
qsqlerror{h.cpp} это файлы модуля QtSQL их ненужно ни откуда и никуда копировать!
Если ты их откуда-то куда-то копируешь, то ты получаешь не Qt, а собственную версию библиотеки. А с собственной версией разбирайся сам.

Цитата(Гость_PavelDart_* @ 22.11.2009, 11:34) *
1.В pro-файле прописал пути до qt-шных lib и include
пути к Qt модулям прописывать не надо, надо подключить только модуль
Цитата(Гость_PavelDart_* @ 22.11.2009, 11:34) *
2.переименовал имеющиеся в lib libQtGui4.a -> libQtGuid4.a, libQtCore4.a ->libQtCored4.a
за каким чёртом?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

3 страниц V   1 2 3 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.3.2024, 10:33