Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > [QT4] как связать QT и fireBird


Автор: Programister0 9.11.2007, 21:01
fireBird v1.5
Qt 4.3.1
компилятор MinGw разные версии но утилита reimp была только вместе с codeblocks(v1,0)

пока проблема только в создании *.a файлов из lib'в & dll'к  fireberd'a

я проделывал следующее:
1) попытался установить поддержку ibase:
Цитата

set Path=C:\qtprog\MinGW\MinGW\bin
configure.exe -qt-sql-ibase -plugin-sql-ibase -I C:\Firebird_1_5\include -L C:\Firebird_1_5\lib

вроде все прошло успешно но в папке %qtdir%\lib не появилось никаких *ibase* файлов

2) создал fbclient.def содержания:
Цитата

cd C:/Firebird_1_5/lib
C:/qtprog/CodeBlocks/bin/reimp.exe -d fbclient_ms.lib


3) батник
Цитата

C:\qtprog\CodeBlocks\mingw32\bin\dlltool.exe -d fbclient.def -l fbclient.a fbclient.dll -k
pause


после запуска получаю сообщение:
Цитата

C:\Firebird_1_5\lib>C:\qtprog\CodeBlocks\mingw32\bin\dlltool.exe -d fbclient.def -l fbclient.a fbclient.dll -k
C:\qtprog\CodeBlocks\mingw32\bin\dlltool.exe: Syntax error in def file fbclient.def:0

что за ошибка? ему сразу первый символ не нравится!

также побывал ставить mySql 5.0 результат пол-ся тотже!

ну вообще ничего не идет!
что делать? по плечо или по локоть руки резать?

Автор: IPFreely 10.11.2007, 12:49
Цитата(Programister0 @ 9.11.2007,  21:01)
fireBird v1.5
Qt 4.3.1
компилятор MinGw разные версии но утилита reimp была только вместе с codeblocks(v1,0)

пока проблема только в создании *.a файлов из lib'в & dll'к  fireberd'a

я проделывал следующее:
1) попытался установить поддержку ibase:
Цитата

set Path=C:\qtprog\MinGW\MinGW\bin
configure.exe -qt-sql-ibase -plugin-sql-ibase -I C:\Firebird_1_5\include -L C:\Firebird_1_5\lib

вроде все прошло успешно но в папке %qtdir%\lib не появилось никаких *ibase* файлов

хм...
для подключения к БД в КуТи собираются плагины
думаю в мингв, так же как и в линуксе, плагины для БД будут лежать в
$QTDIR4/lib/plugins/sqldrivers

а пример можно посмотреть здесь
$QTDIR4/demos/sqlbrowser

Автор: Programister0 13.11.2007, 00:47
Цитата

вроде все прошло успешно но в папке %qtdir%\lib не появилось никаких *ibase* файлов

- нет не прошло! точнее 
Цитата

configure.exe -plugin-sql-ibase  
- прошло
Цитата

mingw32-make.exe
 - не прокатывает 
выдаёт:
Цитата

mingw32-make.exe: *** [makefile] Error -1073741502

Автор: Programister0 13.11.2007, 05:10
помогите! 
я немного разобрался, проблема в компиляторе а точнее в mingw32-make.exe,
он неможет корректно завершить работу,
всегда после ~0,5-1,5 часов работы выдает сообщение:
Цитата

Ошибка при инициализации приложения (0хс0000142). Для выхода из приложения нажмите "Ок".

после нажатия(в консоли выводит):
Цитата

mingw32-make.exe: *** [makefile] Error -1073741502

пробовал компилить несколько раз с помощью разных версий MinGw 
сначала MinGw 3,4,4 два раза но с разными опциями к  configure.exe 
1) разархивировал архив с qt 4.3.2 и от туда запустил батник:
set Path=C:\qtprog\MinGW\bin
configure.exe -platform win32-g++ 
C:\qtprog\MinGW\bin\mingw32-make.exe 
mingw32-make.exe - НЕПРОШЕЛ! ОШИБКА!

2) установил версию qt-win-opensource-4.3.2-mingw указал путь к томуже компилятору (MinGw 3,4,4)
set Path=C:\qtprog\MinGW\MinGW\bin 
configure.exe -platform -qt-sql-ibase -plugin-sql-ibase -I "C:\Firebird_2_0\include" -L "C:\Firebird_2_0\lib"
c:\qtprog\MinGw\bin\mingw32-make.exe
configure.exe - ПРОШЕЛ НОРМАЛЬНО!(Firebird 2.0 был установлен!)
mingw32-make.exe - ОПЯТЬ НЕПРОШЕЛ! ОШИБКА!

3) удалил старый компилятор(MinGw 3,4,4) и QT тоже (на всякий пожарный), установил новый компилятор MinGw 5,1, установил qt-win-opensource-4.3.2-mingw указал путь к новому компилятору и:
set Path=C:\qtprog\MinGW\MinGW\bin 
configure.exe -platform -qt-sql-ibase -plugin-sql-ibase -I "C:\Firebird_2_0\include" -L "C:\Firebird_2_0\lib"
c:\qtprog\MinGw\bin\mingw32-make.exe
mingw32-make.exe - ОШИБКА!


Как настроить, установить sql плагины-драйвера? что делать?

в приложении есть картинки с места событий!

Автор: IPFreely 13.11.2007, 09:09
так это ошибка qmake?
или ошибка mingw32-make?

я не понял где валится то вообще?
как вообще собираете библиотеку?

у меня все скомпилилось...правда я без  плагинов всяких дополнительных собирал...


по поводу ошмибки 0хс0000142 - народ чет в инете пишет по этому поводу

Автор: Programister0 14.11.2007, 00:24
ошибка в mingw32-make, во время компиляции:
Цитата

c:\qtprog\qt>C:\qtprog\MinGW\bin\mingw32-make.exe
c:\qtprog\qt\bin\qmake -spec mkspecs\win32-g++ -win32 -o Makefile projects.pro
c:\qtprog\qt\bin\qmake -spec mkspecs\win32-g++ -win32 -o Makefile projects.pro
c:\qtprog\qt\bin\qmake -spec mkspecs\win32-g++ -win32 -o Makefile projects.pro
...
c:\qtprog\qt\bin\qmake -spec mkspecs\win32-g++ -win32 -o Makefile projects.pro
c:\qtprog\qt\bin\qmake -spec mkspecs\win32-g++ -win32 -o Makefile projects.pro
c:\qtprog\qt\bin\qmake -spec mkspecs\win32-g++ -win32 -o Makefile projects.pro
mingw32-make: *** [makefile] Error -1073741502


до этого я запускал configure.exe вообще без параметров (для проверки) нажимал 'y' и все проходило успешно.

может ОЗУ нехватает? 
у меня 512мб, cpu 2800 celeron D 533, 256kb;
во время компиляции выделяется ~650-700мб памяти, 
файл подкачки у меня поставлен фиксир-го размера 2гб!

Автор: Programister0 22.11.2007, 09:57
все решилось! всем спасибо за внимание!
если интересно решение следующее:
1) чтоб избавиться от ошибки -1073741502 надо было отключить в QTdir/projects.pro обработку demos & exampes - я сделал это просто удалив/закоментировав все строки где встречаются эти слова.

2) для добавления поддержки ibase:
создаем *.a файлы нужных dll-k:
Код

(пути к Firebird, dlltool, reimp - поставьте свои и желательно полные)
cd C:\qtprog\bd\Firebird_2_0\lib
copy C:\qtprog\bd\Firebird_2_0\lib\fbclient_ms.lib C:\qtprog\bd\Firebird_2_0\lib\fbclient.lib
copy C:\qtprog\bd\Firebird_2_0\bin\fbclient.dll C:\qtprog\bd\Firebird_2_0\lib\fbclient.dll 
rem сгенерировать def-файл
  C:\qtprog\CodeBlocks\bin\reimp.exe -d fbclient.lib
rem сформировать библиотеку *.a: 
  C:\qtprog\CodeBlocks\mingw32\bin\dlltool.exe -d fbclient.def -l fbclient.a fbclient.dll -k

копируем gds32_ms.dll (непомню где его нашел - потому вложу его в приложение) в туже директорию

http://www.sql.ru/forum/actualthread.aspx?bid=2&tid=483482&pg=-1:
Код

TARGET     = qsqlibase
HEADERS        = ../../../sql/drivers/ibase/qsql_ibase.h
SOURCES        = main.cpp \
          ../../../sql/drivers/ibase/qsql_ibase.cpp

unix:!contains( LIBS, .*gds.* ):!contains( LIBS, .*libfb.* ):LIBS    *= -lgds
win32:INCLUDEPATH += C:\qtprog\bd\Firebird_2_0\include
win32:LIBS += -lfbclient_ms
win32:LIBS += -LC:\qtprog\bd\Firebird_2_0\lib

win32:!contains( LIBS, .*gds.* ):!contains( LIBS, .*fbclient.* ) {
    !win32-borland:LIBS *= -lgds32_ms
    win32-borland:LIBS  += gds32.lib
}
include(../qsqldriverbase.pri)


и из QTDIR запускаем (не забывая поменять пути на свои):
Код

set QTDIR=c:\qtprog\qt
configure -shared -qt-sql-ibase -release
cd c:\qtprog\qt\src\sql
C:\Qtprog\qt\bin\qmake.exe -o Makefile sql.pro "INCLUDEPATH+=C:\qtprog\bd\Firebird_2_0\include" "LIBS+=C:\qtprog\bd\Firebird_2_0\lib\fbclient.lib"
C:\Qtprog\mingw\bin\mingw32-make.exe

и все работает!

Автор: Programister0 22.11.2007, 10:01
PS: возможно эту тему тоже можно отнести в "Кроссплатформенное программирование, QT/Gtk+/wxWidgets"

здесь вторая часть архива gds32_ms

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)