Вообщем заморочался я на QT+C++
Сам QTSDK скачивал с сайта Nokia.
После тяжелого мозго..выноса. собрал OCI драйвер для Oracle.
Вообщем в результате имеем:
нафига sdk с нокии качали? можно же всё пакетами поставить...
собственно как я понял вся sdk лежит в /home/peter/Documents/Program/QtSDK/
так чего программа слинкована с /usr/lib/oracle/10.2.0.3/client/lib/libqsqloci.so.
да... и все директории с либами из самопальной sdk при запуске и при сборке в LDPATH прописаны?
В продолжение темы!...
Установил всё через rpm!
Поставил такой замечательный пакет как
[console]libqt4-sql-unixODBC-4.7.1-7.2.x86_64[/console]
появился ODBC драйвер только вот пишут что для Oracle он не подойдёт...
Ладно поставил с оф сайт oracle
[console]oracle-instantclient-odbc-10.2.0.4-1.x86_64[/console]
есть там
Задача приконектится к ДБ Oracle=)
Вот вообщем то и всё=)
Через Java делается 3 строчками... тут просто невероятные усилия надо сделать.. и в инте почти 0 инфы на эту тему=)
что за библиотека не понятно... ссылку на исходники для неё прилепили бы что ли..
Где то нашёл что так у кого то работает но:
мб там просто надо указывать SID базы TEST?
знает ли QtCreator что у меня прописана TNS_ADMIN в профайле где уже есть строка
только всё равно ни хрена не понятно что терь под каждую версию qt заставлять всех собирать свою oracle oci
может плагин от старых версий кьюта должен работать с новыми? но это нужно пробовать... возможно даже наоборот...
ИМХО большей проблемой будет то, что для работы нужны оракловские либы... почитайте о том, православно ли их распространять самому...
Для сумашедших типа меня.... Напишу сумбурно ибо делал давно и забил на эту идею... 1. Скачиваем Oracle Client c oracle.com http://www.oracle.com/technetwork/database/features/instant-client/linuxx86-64soft-092277.html
я скачал 10.2.0.4
пакеты:
oracle-instantclient-sqlplus-10.2.0.4-1.x86_64
oracle-instantclient-basic-10.2.0.4-1.x86_64
oracle-instantclient-devel-10.2.0.4-1.x86_64
oracle-instantclient-odbc-10.2.0.4-1.x86_64
соответственно rpm -Uhv ставим всё это дело.
2. Ставим qt-creator из репозитория ДИСТРИБУТИВА ибо НЕ из дистрибутива работать НЕ будет!!(чОрт знает почему не помню уже, а мб у кого то уже и будет)
в данный момент у меня openSuse 11.4 x86_64
Установлен
Qt Creator 2.1.0
Основан на Qt 4.7.1 (64-х битной)
4. Тут начинается самый геморой могу допустить не точности
Надо собственно собарть oci драйвер к сожалению с помощью qt-sdk пакетов которые включены в репозиторий сделать это как я понял нереально... поэтому полюбому приходится скачивать QtSDK с сайта nokia.
Пунты 1) и 2) можно не выполнять если в пунке 3 были скачены сразу сырцы. 1) ~/Documents/Program/QtSDK> ./SDKMaintenanceTool 2) Устанавливаем QtSDK Source т.к у нас с дистрибутивом идёт QT 4.7.1 его сырцы и ставим. 3) Собираем треклятый драйвер
[console]cd /home/peter/Documents/Program/QtSDK/QtSources/4.7.1/src/plugins/sqldrivers/oci[/console]
[console]qmake -o Makefile "INCLUDEPATH+=/usr/lib/oracle/10.2.0.4/client64" "LIBS+=-L/usr/lib/oracle/10.2.0.4/client64/lib" oci.pro[/console] 4) Тут я ваще ни хрена не помню...:
Получаем Makefile
делаем
[console]make[/console]
наверное надо сделать
[console]make install
ldconfig[/console]
трулялял у нас есть libqsqloci.so
Я этот файл закинул себе в проект на фига я хз=) Так же почему то валялось у меня 2 команды:
[console]install -m 755 -p "libqsqloci.so" "/usr/lib/qt4/plugins/sqldrivers/libqsqloci.so"
strip --strip-unneeded "/usr/lib/qt4/plugins/sqldrivers/libqsqloci.so"[/console]
я не знаю на фига я их скопировал и не помню выполнял ли я их ваще, но если что то не заработает попробуйте и отпишите нужны ли эти команды=)
Возможные ошибки в Пункте 4 при сборке драйвера
1)make
[console]g++ -c -m64 -pipe -O2 -fvisibility=hidden -fvisibility-inlines-hidden -D_REENTRANT -Wall -W -fPIC -DQT_NO_CAST_TO_ASCII -DQT_NO_CAST_FROM_ASCII -DQT_NO_DEBUG -DQT_PLUGIN -DQT_SQL_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/default -I. -I/usr/include/QtCore -I/usr/include/QtSql -I/usr/include -I/usr/lib/oracle/10.2.0.4/client64 -I. -o main.o main.cpp
In file included from main.cpp:44:0:
../../../sql/drivers/oci/qsql_oci.h:47:46: fatal error: QtSql/private/qsqlcachedresult_p.h: Нет такого файла или каталога
compilation terminated.
make: *** [main.o] Ошибка 1
[/console] Решение:
Добавить в MakeFile в строку INCPATH
-I/home/peter/Documents/Program/QtSDK/Simulator/Qt/gcc/included
Результирующая строка у меня выглядит так:
INCPATH = -I/usr/share/qt4/mkspecs/default -I. -I/usr/include/QtCore -I/usr/include/QtSql -I/usr/include -I/usr/lib/oracle/10.2.0.4/client64 -I. -I/home/peter/Documents/Program/QtSDK/Simulator/Qt/gcc/include
Решение
Добавить в MakeFile в строку INCPATH
-I/usr/include/oracle/10.2.0.4/client64
Результирующая строка у меня выглядит так:
INCPATH = -I/usr/share/qt4/mkspecs/default -I. -I/usr/include/QtCore -I/usr/include/QtSql -I/usr/include -I/usr/lib/oracle/10.2.0.4/client64 -I. -I/home/peter/Documents/Program/QtSDK/Simulator/Qt/gcc/include -I/usr/include/oracle/10.2.0.4/client64
Обращайте внимение на пути в библиотекам или файлам. Действовал тупо копи пастом=)