crossplatform.ru

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

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
iddqd
  опции профиля:
сообщение 26.11.2009, 12:19
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 32
Регистрация: 26.11.2009
Пользователь №: 1261

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




Репутация:   0  


Приветствую.

Имеется qt-sdk-win-opensource-2009.04 установленный на WinXP SP2.

1. Собрал (debug/release) драйвер для MySQL, получил qsqlmysqld4.dll/qsqlmysql4.dll, скопировал их к дефолтным плагинам в папку \Qt\2009.04\qt\plugins\sqldrivers\ вместе с .a файлами. По-идее этого достаточно. Собираю пример из \Qt\2009.04\qt\demos\sqlbrowser\, при запуске он ни в какую ни видит новый плагин, qsqlmysql4. Что я делаю не так?

2. Пытаюсь собрать драйвер для Oracle. Делаю по хелпу, поставил Oracle 9i Client c опцией "Programmer", добавил в oci.pro следующие строки
INCLUDEPATH+=c:\oracle9\oci\include
LIBS+=c:\oracle9\oci\lib\msvc

При сборке ругается непонятным образом:
Цитата
c:\Qt\2009.04\mingw\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\mingw32\bin\ld.exe: c:\oracle9\oci\lib\msvc: No such file: Permission denied
collect2: ld returned 1 exit status
mingw32-make[1]: *** [release\qsqloci4.dll] Error 1

Папки c:\oracle9\oci\include и c:\oracle9\oci\lib\msvc существуют, файлы в них есть.
Как решить эту проблему?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 26.11.2009, 14:26
Сообщение #2


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

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

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




Репутация:   94  


iddqd, Давай разные типы драйверов в разных темах.

Да и тем про MySQL стало слишком много, посмотри какая тебе больше подходит и продолжи там

П.С.
Цитата(iddqd @ 26.11.2009, 15:19) *
No such file: Permission denied
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
iddqd
  опции профиля:
сообщение 26.11.2009, 15:54
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 32
Регистрация: 26.11.2009
Пользователь №: 1261

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




Репутация:   0  


Про MySQL вопрос снимается, по поиску нашел решение. Выполнил следующую команду в папке c:\MySQL\lib\opt\
dlltool -k --input-def libmysql.def --dllname libmysql.dll --output-lib libmysql.a

затем собрал mysql.pro, скопировал .dll и .a в qt\plugins\sqldrivers\, а libmysql.dll в qt\bin\ (без последнего действия не заработало).

А вот с oci не получается разобраться.

Цитата
П.С.
Цитата(iddqd @ 26.11.2009, 15:19) *
No such file: Permission denied


Я тоже обратил внимание, но я уже на всю папку c:\oracle9 выставил Full control для Everyone. Ошибка осталась. Поиском пользовался, решения не нашёл.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 26.11.2009, 16:05
Сообщение #4


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

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

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




Репутация:   94  


Цитата(iddqd @ 26.11.2009, 18:54) *
Я тоже обратил внимание, но я уже на всю папку c:\oracle9 выставил Full control для Everyone. Ошибка осталась. Поиском пользовался, решения не нашёл.
по Ораклу здесь решения нет, если я не ошибаюсь.

По повуду нарушения прав доступа, я думаю речь идёт о dll'ке которая, возможно, занята другим приложением (хотя dll'а должна быть доступна всем).
Нельзя ли ради теста остановит сервер и попробовать собрать драйвер заново
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
iddqd
  опции профиля:
сообщение 26.11.2009, 16:10
Сообщение #5


Студент
*

Группа: Участник
Сообщений: 32
Регистрация: 26.11.2009
Пользователь №: 1261

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




Репутация:   0  


Цитата(Litkevich Yuriy @ 26.11.2009, 16:05) *
Нельзя ли ради теста остановит сервер и попробовать собрать драйвер заново


Дело в том, что у меня сервер и не установлен. Я ставил только клиент, как описано в хелпе: "Choosing the option "Programmer" in the Oracle Client Installer from the Oracle Client Installation CD is sufficient to build the plugin.".
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
iddqd
  опции профиля:
сообщение 27.11.2009, 11:20
Сообщение #6


Студент
*

Группа: Участник
Сообщений: 32
Регистрация: 26.11.2009
Пользователь №: 1261

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




Репутация:   0  


Драйвер наконец-то собрался. А дело было в том, что я не добавил префикс -L вот тут
Цитата
LIBS+=-Lc:\oracle9\oci\lib\msvc


Добавил, драйвер собрался. Для работы ещё требуется oci.dll и вот тут возникает ещё один вопрос - мне нужно запустить программу на компе, где вообще не установлен Oracle Client. Программа запускается, но к серверу не коннектится. Failed to logon. Почему такое происходит и нужно ли что-то ещё, какие-нибудь dll'ки, для работы программы без установленного Oracle Client? На Delphi это реально сделать и оно работает, но хочется переписать программу на Qt.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Kagami
  опции профиля:
сообщение 27.11.2009, 12:09
Сообщение #7


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

Группа: Участник
Сообщений: 601
Регистрация: 2.2.2009
Пользователь №: 523

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




Репутация:   9  


Потому что надо эту библиотеку с собой таскать. И лежать она должна в папке sqldrivers, которую надо создать рядом с экзешником.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
iddqd
  опции профиля:
сообщение 27.11.2009, 12:43
Сообщение #8


Студент
*

Группа: Участник
Сообщений: 32
Регистрация: 26.11.2009
Пользователь №: 1261

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




Репутация:   0  


Ты про сам скомпиленный драйвер или про oci.dll ? Я в курсе. И то и то перетащил на другую тачку, где нет никакого оракла, запускаю программу, драйвер грузится нормально, но вот при попытке коннекта к базе получаю "Unable to logon" без дополнительных разъяснений. Цель - чтобы работало без предустановленного Оracle Client'a, а то очень не удобно получается.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 27.11.2009, 14:28
Сообщение #9


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

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

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




Репутация:   94  


Я думаю, что без клиента не получится. Либо придумывать способ как его вкомпилить в свою программу, но тут могут и правовые последствия возникнуть.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
iddqd
  опции профиля:
сообщение 27.11.2009, 14:36
Сообщение #10


Студент
*

Группа: Участник
Сообщений: 32
Регистрация: 26.11.2009
Пользователь №: 1261

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




Репутация:   0  


Если так, то это очень и очень плохо... А с "вкомпиливанием" вообще не вариант... Хм, на Delphi-то написали, работает без клиента. Нужели на Qt такого не получится сделать :scratch_one-s_head:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 27.11.2009, 14:38
Сообщение #11


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

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

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




Репутация:   94  


iddqd, я думаю имей ты комерческую лицензию Qt троли бы тебе помогли с этим. А у Дельфей вообще нет халявной лицензии (LGPL), следовательно и сравнивать нужно с комерческой Qt.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
iddqd
  опции профиля:
сообщение 27.11.2009, 14:44
Сообщение #12


Студент
*

Группа: Участник
Сообщений: 32
Регистрация: 26.11.2009
Пользователь №: 1261

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




Репутация:   0  


По большому счёту всё верно.

Посмотрим, может кто-нибудь ещё сталкивался с такой проблемой и опишут, к чему в итоге пришли.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 27.11.2009, 14:56
Сообщение #13


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

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

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




Репутация:   94  


Цитата(iddqd @ 27.11.2009, 17:44) *
к чему в итоге пришли.
все приходят к одному и тому же:
Моя программа - моя программа, а её зависимости - неизбежные зависимости.

Пример - тот же Делфи, дистрибутив содержит кучу всего, но эту кучу можно установить одной программой установки.

Т.е. делаешь дистриб, который устанавливает и клиент Оракла и твою программу, ВАЖНО: для пользователя процесс установки должен быть простой, тогда ему неважно сколько dll'ок будет установлено.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
iddqd
  опции профиля:
сообщение 27.11.2009, 16:53
Сообщение #14


Студент
*

Группа: Участник
Сообщений: 32
Регистрация: 26.11.2009
Пользователь №: 1261

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




Репутация:   0  


Цитата(Litkevich Yuriy @ 27.11.2009, 14:56) *
Пример - тот же Делфи, дистрибутив содержит кучу всего, но эту кучу можно установить одной программой установки.

Т.е. делаешь дистриб, который устанавливает и клиент Оракла и твою программу, ВАЖНО: для пользователя процесс установки должен быть простой, тогда ему неважно сколько dll'ок будет установлено.


В том-то и дело, нет желания делать дистрибы и ставить клиента к каждому юзеру на комп. Софт только для внутреннего использования. В Delphi моя программа компилируется в один единственный exe'шник (и работает свободно на любом компе, соединяясь с сервером в сети) и я хочу, хотя бы приближённо, сделать то же самое на Qt (я имею в виду static сборки) или согласен даже на shared сборки с набором либ кьюта, но ставить ещё и Oracle Client каждый раз - такой вариант не катит, к сожалению...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_PavelDart_*
сообщение 27.11.2009, 20:35
Сообщение #15





Гости








    


iddqd, а можно по-подробнее про сборку драйвера для OCI.
Жутко интересно, из каких исходников были собраны драйвера, у меня есть исходники вот отсюда только толку от них мало, скорее наверное, от меня.) Ещё интересно взглянуть на эти исходники. Ну и что бы сориентироваться, в правильности моих действий, приведите пожалуйста, список Ваших действий.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 27.11.2009, 20:45
Сообщение #16


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

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

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




Репутация:   94  


Цитата(Гость_PavelDart_* @ 27.11.2009, 23:35) *
из каких исходников были собраны драйвера
исходники QOCI смотри в архиве Qt для всех платформ (qt-all-opensource-src-*) на FTP тролей :
ftp://ftp.trolltech.com/qt/source/

в архивах под конкретную плаформу X11 или Win их нет
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_PavelDart_*
сообщение 27.11.2009, 22:54
Сообщение #17





Гости








    


Litkevich Yuriy, спасибо, интересно прочитать комментарии iddqd.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
iddqd
  опции профиля:
сообщение 29.11.2009, 20:56
Сообщение #18


Студент
*

Группа: Участник
Сообщений: 32
Регистрация: 26.11.2009
Пользователь №: 1261

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




Репутация:   0  


Цитата(PavelDart @ 27.11.2009, 22:54) *
Litkevich Yuriy, спасибо, интересно прочитать комментарии iddqd.


В принципе всё описано в постах #1 и #6. Если по шагам, то получится примерно вот так:

1. Качаем qt-sdk-win-opensource-2009.04, ставим его, в комплекте идёт IDE Qt Creator

2.
a) Если есть CD c инсталлером Oracle, то ставим Oracle Client с диска, при установке выбираем Custom и отмечаем опцию Oracle Programmer
b) Если диска нет, но есть, например, Oracle Instant Client 10й или 11й версии, то распаковываем его в любое место и запоминаем путь

3. Открываем в Qt Creator файл путь_до_qt\2009.04\qt\src\plugins\sqldrivers\oci\oci.pro, дописываем в него две строки:

- для Oracle 9:
INCLUDEPATH+=c:\oracle9\oci\include
LIBS+=-Lc:\oracle9\oci\lib\msvc

- для Oracle InstantClient 11:
INCLUDEPATH+=c:\instantclient_11_1\sdk\include
LIBS+=-Lc:\instantclient_11_1\sdk\lib\msvc


4. Собираем проект, получаем драйвер. Копируем полученные при сборке файлы qsqloci4.dll и libqsqloci4.a для release сборки (для debug - qsqlocid4.dll и libqsqlocid4.a) в папку путь_до_qt\2009.04\qt\plugins\sqldrivers\.
Всё, драйвер собран и готов к использованию.

5. Не забываем о том, что для запуска на другом компе нам нужно скопировать в папку с нашей программой файл oci.dll (из состава самого Oracle Client'a), также создать в папке с нашей прогой папку sqldrivers и скопировать туда файл qsqloci4.dll.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_PavelDart_*
сообщение 29.11.2009, 23:59
Сообщение #19





Гости








    


iddqd, чего-то нового ожидать было бессмысленно. Всё равно, спасибо.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 24.6.2025, 13:46