Russian Qt Forum
Сентябрь 30, 2024, 14:26 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [+]не собирается sql driver : QOCI  (Прочитано 5635 раз)
michael_ky
Гость
« : Ноябрь 30, 2011, 00:07 »

Делал по поиску, по инструкциям, докам.
Получил makefile-ы.
mingw32-make выплевывает ld.exe : cannot find -loci
Если кто с подобным сталкивался, прошу помогите.
Подробную информацию оформлю чуть позже.
Заранее спасибо.
« Последнее редактирование: Ноябрь 30, 2011, 14:41 от michael_ky » Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Ноябрь 30, 2011, 07:30 »

Оракловская либа доступна? Покажи как конфигурил и собирал.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
michael_ky
Гость
« Ответ #2 : Ноябрь 30, 2011, 12:45 »

Цитировать
Microsoft Windows [Version 6.1.7601]
(c) Корпорация Майкрософт (Microsoft Corp.), 2009. Все права защищены.

C:\Users\Michael>set INCLUDE=C:\Oracle\product\11.2.0\client_xe\oci\include;%INC
LUDE%

C:\Users\Michael>set LIB=C:\Oracle\product\11.2.0\client_xe\oci\lib\msvc;%LIB%

C:\Users\Michael>set PATH=%PATH%;C:\Qt\MinGW\bin;C:\Qt\Desktop\Qt\4.7.4\mingw\bi
n

C:\Users\Michael>path
PATH=C:\Oracle\product\11.2.0\client_xe\bin;C:\Oracle\Express11g\app\oracle\prod
uct\11.2.0\server\bin;;C:\Program Files\Common Files\Microsoft Shared\Windows Li
ve;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Windows\system32;C:
\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;c:
\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Micro
soft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\DTS\Bi
nn\;C:\Oracle\product\11.2.0\client_xe\BIN;C:\Qt\MinGW\bin;C:\Qt\Desktop\Qt\4.7.
4\mingw\bin

C:\Users\Michael>cd C:\Qt\QtSources\4.7.4\src\plugins\sqldrivers\oci

C:\Qt\QtSources\4.7.4\src\plugins\sqldrivers\oci>qmake -o Makefile oci.pro

После qmake добавил -I"C:\Oracle\...\include" в makefile.debug и .release

C:\Qt\QtSources\4.7.4\src\plugins\sqldrivers\oci>mingw32-make debug
mingw32-make -f Makefile.Debug
mingw32-make[1]: Entering directory `C:/Qt/QtSources/4.7.4/src/plugins/sqldriver
s/oci'
g++ -mthreads -shared -Wl,--out-implib,debug\libqsqlocid4.a -o debug\qsqlocid4.d
ll debug/main.o debug/qsql_oci.o debug/moc_qsql_oci.o  -L"c:\Qt\Desktop\Qt\4.7.4
\mingw\lib" debug\qsqlocid_resource_res.o -loci -lQtSqld4 -lQtCored4
c:/qt/mingw/bin/../lib/gcc/mingw32/4.6.1/../../../../mingw32/bin/ld.exe: cannot find -loci
collect2: ld returned 1 exit status
mingw32-make[1]: *** [debug\qsqlocid4.dll] Error 1
mingw32-make[1]: Leaving directory `C:/Qt/QtSources/4.7.4/src/plugins/sqldrivers/oci'
mingw32-make: *** [debug] Error 2
Руководствовался этим. В теме даже был пост про мою проблему, решением было якобы OCI.dll path was missing in environment variable. Копировал всевозможными способами, добавлял в переменные среды, эффекта не возымело. Хотя скорее всего что-то не так понял...
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Ноябрь 30, 2011, 13:03 »

Там для msvc рассказано, а у тебя mingw.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
michael_ky
Гость
« Ответ #4 : Ноябрь 30, 2011, 13:31 »

Цитата: qt.nokia.com
How to Build the OCI Plugin on Windows

Choosing the option "Programmer" in the Oracle Client Installer from the Oracle Client Installation CD is generally sufficient to build the plugin. For some versions of Oracle Client, you may also need to select the "Call Interface (OCI)" option if it is available.

Build the plugin as follows (here it is assumed that Oracle Client is installed in C:\oracle):

 
Цитировать
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

If you are not using a Microsoft compiler, replace nmake with make in the line above.

When you run your application you will also need to add the oci.dll path to your PATH environment variable:

Цитировать
set PATH=%PATH%;c:\oracle\bin
Я пытался собрать nmake-ом, но тот отсылался на g++ и результат был аналогичен. Позже где-то вычитал, что так не должно происходить, потому и остановился на mingw32-make.
« Последнее редактирование: Ноябрь 30, 2011, 23:29 от michael_ky » Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #5 : Ноябрь 30, 2011, 13:44 »

set LIB=C:\Oracle\product\11.2.0\client_xe\oci\lib\msvc;%LIB%
Ты пытаешься мингвом прилинковать студийную либу.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
michael_ky
Гость
« Ответ #6 : Ноябрь 30, 2011, 13:58 »

Цитировать
Microsoft Windows [Version 6.1.7601]
(c) Корпорация Майкрософт (Microsoft Corp.), 2009. Все права защищены.

C:\Windows\system32>set INCLUDE=C:\Oracle\product\11.2.0\client_xe\oci\include;%
INCLUDE%

C:\Windows\system32>set LIB=C:\Oracle\product\11.2.0\client_xe\oci\lib\msvc;%LIB
%

C:\Windows\system32>set PATH=C:\Program Files (x86)\Microsoft Visual Studio 10.0
\VC\bin;%PATH%

C:\Windows\system32>cd C:\Qt\QtSources\4.7.4\src\plugins\sqldrivers\oci

C:\Qt\QtSources\4.7.4\src\plugins\sqldrivers\oci>nmake

Служебная программа обслуживания программ Microsoft (R), версия 10.00.30319.01
(C) Корпорация Майкрософт (Microsoft Corporation). Все права защищены.

        "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\nmake.exe" -
f Makefile.Debug

Служебная программа обслуживания программ Microsoft (R), версия 10.00.30319.01
(C) Корпорация Майкрософт (Microsoft Corporation). Все права защищены.

        g++ -mthreads -shared -Wl,--out-implib,debug\libqsqlocid4.a -o debug\qsq
locid4.dll debug/main.o  debug/qsql_oci.o  debug/moc_qsql_oci.o  -L"c:\Qt\Deskto
p\Qt\4.7.4\mingw\lib" debug\qsqlocid_resource_res.o -loci -lQtSqld4 -lQtCored4
"g++" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
NMAKE : fatal error U1077: g++ : возвращенный код "0x1"
Stop.
NMAKE : fatal error U1077: "C:\Program Files (x86)\Microsoft Visual Studio 10.0\
VC\bin\nmake.exe" : возвращенный код "0x2"
Stop.

C:\Qt\QtSources\4.7.4\src\plugins\sqldrivers\oci>set PATH=C:\Qt\MinGW\bin;%PATH%


C:\Qt\QtSources\4.7.4\src\plugins\sqldrivers\oci>nmake

Служебная программа обслуживания программ Microsoft (R), версия 10.00.30319.01
(C) Корпорация Майкрософт (Microsoft Corporation). Все права защищены.

        "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\nmake.exe" -
f Makefile.Debug

Служебная программа обслуживания программ Microsoft (R), версия 10.00.30319.01
(C) Корпорация Майкрософт (Microsoft Corporation). Все права защищены.

        g++ -mthreads -shared -Wl,--out-implib,debug\libqsqlocid4.a -o debug\qsq
locid4.dll debug/main.o  debug/qsql_oci.o  debug/moc_qsql_oci.o  -L"c:\Qt\Deskto
p\Qt\4.7.4\mingw\lib" debug\qsqlocid_resource_res.o -loci -lQtSqld4 -lQtCored4
c:/qt/mingw/bin/../lib/gcc/mingw32/4.6.1/../../../../mingw32/bin/ld.exe: cannot
find -loci
collect2: ld returned 1 exit status
NMAKE : fatal error U1077: C:\Qt\MinGW\bin\g++.EXE : возвращенный код "0x1"
Stop.
NMAKE : fatal error U1077: "C:\Program Files (x86)\Microsoft Visual Studio 10.0\
VC\bin\nmake.exe" : возвращенный код "0x2"
Stop.

C:\Qt\QtSources\4.7.4\src\plugins\sqldrivers\oci>
Стоит Win SDK : VC 9,10.
Записан
michael_ky
Гость
« Ответ #7 : Ноябрь 30, 2011, 14:18 »

Оказывается иногда фантастика становится реальностью.
В Makefile.debug обратил внимание на строчку :
Код:
LIBS        =        -L"c:\Qt\Desktop\Qt\4.7.4\mingw\lib" debug\qsqlocid_resource_res.o -loci -lQtSqld4 -lQtCored4
Добавил -L"path_to_oracle\BIN" . Получилось
Код:
LIBS        =        -L"c:\Qt\Desktop\Qt\4.7.4\mingw\lib" -L"C:\Oracle\product\11.2.0\client_xe\BIN" debug\qsqlocid_resource_res.o -loci -lQtSqld4 -lQtCored4
После чего собрал nmake-ом, который выплюнул мне нужную .dll и .a
Осталось узнать работоспособны ли они.

UPD.
В Makefile.release добавил аналогично с debug путь до BIN и
Код:
INCPATH       = -I"c:\Qt\Desktop\Qt\4.7.4\mingw\include\QtCore" -I"c:\Qt\Desktop\Qt\4.7.4\mingw\include\QtSql" -I"c:\Qt\Desktop\Qt\4.7.4\mingw\include" -I"c:\Qt\Desktop\Qt\4.7.4\mingw\include\ActiveQt" -I"release" -I"c:\Qt\Desktop\Qt\4.7.4\mingw\mkspecs\default"
Добавил -I"C:\Oracle\product\11.2.0\client_xe\oci\include"
Код:
INCPATH       = -I"c:\Qt\Desktop\Qt\4.7.4\mingw\include\QtCore" -I"c:\Qt\Desktop\Qt\4.7.4\mingw\include\QtSql" -I"c:\Qt\Desktop\Qt\4.7.4\mingw\include" -I"c:\Qt\Desktop\Qt\4.7.4\mingw\include\ActiveQt" -I"release" -I"c:\Qt\Desktop\Qt\4.7.4\mingw\mkspecs\default" -I"C:\Oracle\product\11.2.0\client_xe\oci\include"
Хотя бы собралось.
« Последнее редактирование: Ноябрь 30, 2011, 23:29 от michael_ky » Записан
michael_ky
Гость
« Ответ #8 : Ноябрь 30, 2011, 14:40 »

Вроде как работают. Спасибо за помощь.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.284 секунд. Запросов: 22.