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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Сборка QIBASE  (Прочитано 18948 раз)
cooler_3105
Гость
« : Март 11, 2009, 12:12 »

Не удается собрать плагин QIBASE под винду. Использую Firebird
Выполняю
Код:
    
cd %QTDIR%\src\plugins\sqldrivers\ibase
qmake -o Makefile "INCLUDEPATH+=C:\Program Files\Firebird\Firebird_2_1\include" "LIBS+=-lC:\Program Files\Firebird|Firebird_2_1\lib\fbclient_ms" ibase.pro
make
На что компилятор мне выдает:
Код:
mingw32-make -f Makefile.Debug all
mingw32-make[1]: Entering directory `C:/Qt/4.3.0/src/plugins/sqldrivers/ibase'
g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -mthreads -Wl -shared -Wl,--out-implib,c:\Qt\4.3.0\plugins\sqldrivers\libqsqlibased4.a -o "..\..\..\..\plugins\sqldrivers\qsqlibased4.dll" tmp\obj\debug_shared\main.o tmp\obj\debug_shared\qsql_ibase.o  -L"c:\Qt\4.3.0\lib" -L"c:\Qt\4.3.0\lib" tmp\obj\debug_shared\qsqlibased_resource_res.o -lc:\Program Files\Firebird\Firebird_2_1\lib\fbclient_ms -lQtSqld4 -lQtCored4
g++: Files\Firebird\Firebird_2_1\lib\fbclient_ms: No such file or directory
mingw32-make[1]: *** [..\..\..\..\plugins\sqldrivers\qsqlibased4.dll] Error 1
mingw32-make[1]: Leaving directory `C:/Qt/4.3.0/src/plugins/sqldrivers/ibase'
mingw32-make[1]: *** [debug-all] Error 2
Подскажите что не так делаю? fbclient_ms.lib преспокойненько лежит в C:\Program Files\Firebird\Firebird_2_1\lib
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


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


Просмотр профиля WWW
« Ответ #1 : Март 11, 2009, 12:41 »

Читаем Вики: http://prog.org.ru/wiki/index.php?title=%D0%A1%D0%B1%D0%BE%D1%80%D0%BA%D0%B0_%D0%B4%D1%80%D0%B0%D0%B9%D0%B2%D0%B5%D1%80%D0%B0_Firebird_%D0%BA%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%82%D0%BE%D1%80%D0%BE%D0%BC_MinGW_32.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
ax
Чайник
*
Offline Offline

Сообщений: 60


Просмотр профиля
« Ответ #2 : Март 11, 2009, 13:13 »

Посмотри на http://code.google.com/p/qtfirebirdibppsqldriver/
Записан
cooler_3105
Гость
« Ответ #3 : Март 11, 2009, 13:58 »

panter_dsd, ну как-то неразумно ради сборки одного плагина заново конфигурировать qt. Лучше наверное вручную его собрать.
Плагин, как мне кажется, я собрал: в папке plugins\sqldrivers появились qsqlibase4.dll, qsqlibased4.dll. Но при компиляции программы все равно возникает
Код:
Запуск...
QSqlDatabase: QIBASE driver not loaded

QSqlDatabase: available drivers: QSQLITE QODBC3 QODBC

Cannot open database: QSqlError(-1, "Driver not loaded", "Driver not loaded")

---------------------- Нормальное завершение ----------------------
Подскажите что не так...
« Последнее редактирование: Март 11, 2009, 14:19 от cooler_3105 » Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #4 : Март 11, 2009, 15:03 »

я какое-то время не мог, собрать, посему все действия записывал и вот так получилось:
Цитировать
переименовываем fbclient_ms.lib в fbclient.lib

cd %QTDIR%\src\plugins\sqldrivers\ibase
qmake -o Makefile "INCLUDEPATH+=F:\Firebird\Firebird_2_0\include" "LIBS+=F:\Firebird\Firebird_2_0\lib\fbclient.lib" ibase.pro
Записан

Юра.
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #5 : Март 11, 2009, 15:04 »

Была проблема при сборке драйвера ibase для firebird под линукс, под винду еще не пробовал 0- предстоит

Для решения изменили pro файл ibase.pro

Код:
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    *= -lfbclient

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

include(../qsqldriverbase.pri)
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #6 : Март 11, 2009, 15:22 »

Плагин, как мне кажется, я собрал: в папке plugins\sqldrivers появились qsqlibase4.dll, qsqlibased4.dll. Но при компиляции программы все равно возникает QSqlDatabase: QIBASE driver not loaded

Выполни поиск по форуму на предмет "driver not loaded"
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
kirill
Гость
« Ответ #7 : Март 12, 2009, 06:52 »

установи firebird в папку без пробелов и не парься
Записан
fe328
Гость
« Ответ #8 : Апрель 17, 2010, 23:38 »

Ребят! помогите, плиз, ламмеру!
Вроде все делаю по инструкции, но результат отвратный....

Qt 2010.02.01 , IB 5.6

Код:
D:\qt\qt\src\plugins\sqldrivers\ibase>cd %QTDIR%\src\plugins\sqldrivers\ibase
D:\qt\qt\src\plugins\sqldrivers\ibase>qmake "INCLUDEPATH+=C:\ib\include" ibase.pro
D:\qt\qt\src\plugins\sqldrivers\ibase>nmake

Microsoft (R) Program Maintenance Utility   Version 6.00.8168.0
Copyright (C) Microsoft Corp 1988-1998. All rights reserved.

        NMAKE -f Makefile.Debug all

Microsoft (R) Program Maintenance Utility   Version 6.00.8168.0
Copyright (C) Microsoft Corp 1988-1998. All rights reserved.

        g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_NO_CAST_TO_ASCII -DQT_NO_CAST_FROM_ASCII -DQT_DLL -DQT_PLUGIN -DQT_SQL_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I"..\..\..\..\include\QtCore" -I"..\..\..\..\include\QtSql" -I"..\..\..\..\include" -I"c:\ib\include" -I"..\..\..\..\include\ActiveQt" -I"tmp\moc\debug_shared" -I"..\..\..\..\mkspecs\win32-g++" -o tmp\obj\debug_shared\qsql_ibase.o ..\..\..\sql\drivers\ibase\qsql_ibase.cpp

..\..\..\sql\drivers\ibase\qsql_ibase.cpp: In function 'void initDA(XSQLDA*)':
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:122: error: 'SQL_INT64' was not declared in this scope
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:127: error: 'SQL_TIMESTAMP' was not declared in this scope
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:128: error: 'SQL_TYPE_TIME' was not declared in this scope
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:129: error: 'SQL_TYPE_DATE' was not declared in this scope
..\..\..\sql\drivers\ibase\qsql_ibase.cpp: In function 'QVariant::Type qIBaseTypeName(int, bool)':
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:176: error: 'blr_sql_time' was not declared in this scope
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:178: error: 'blr_sql_date' was not declared in this scope
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:180: error: 'blr_timestamp' was not declared in this scope
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:188: error: 'blr_int64' was not declared in this scope
..\..\..\sql\drivers\ibase\qsql_ibase.cpp: In function 'QVariant::Type qIBaseTypeName2(int, bool)':
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:208: error: 'SQL_INT64' was not declared in this scope
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:213: error: 'SQL_TIMESTAMP' was not declared in this scope
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:215: error: 'SQL_TYPE_TIME' was not declared in this scope
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:217: error: 'SQL_TYPE_DATE' was not declared in this scope
..\..\..\sql\drivers\ibase\qsql_ibase.cpp: At global scope:
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:228: error: 'ISC_TIMESTAMP' does not name a type
..\..\..\sql\drivers\ibase\qsql_ibase.cpp: In function 'QDateTime fromTimeStamp(char*)':
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:246: error: 'ISC_TIMESTAMP' was not declared in this scope
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:246: error: expected primary-expression before 'int'
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:247: error: expected primary-expression before 'int'
..\..\..\sql\drivers\ibase\qsql_ibase.cpp: At global scope:
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:252: error: 'ISC_TIME' does not name a type
..\..\..\sql\drivers\ibase\qsql_ibase.cpp: In function 'QTime fromTime(char*)':
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:263: error: 'ISC_TIME' was not declared in this scope
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:263: error: expected primary-expression before 'int'
..\..\..\sql\drivers\ibase\qsql_ibase.cpp: At global scope:
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:268: error: 'ISC_DATE' does not name a type
..\..\..\sql\drivers\ibase\qsql_ibase.cpp: In function 'QDate fromDate(char*)':
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:284: error: 'ISC_TIMESTAMP' was not declared in this scope
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:284: error: expected primary-expression before 'int'
..\..\..\sql\drivers\ibase\qsql_ibase.cpp: In function 'char* readArrayBuffer(QList<QVariant>&, char*, short int, short int*, ISC_ARRAY_DESC*, QTextCodec*)':
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:535: error: 'blr_int64' was not declared in this scope
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:544: error: 'blr_timestamp' was not declared in this scope
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:547: error: 'ISC_TIMESTAMP' was not declared in this scope
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:550: error: 'blr_sql_time' was not declared in this scope
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:553: error: 'ISC_TIME' was not declared in this scope
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:556: error: 'blr_sql_date' was not declared in this scope
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:559: error: 'ISC_DATE' was not declared in this scope
..\..\..\sql\drivers\ibase\qsql_ibase.cpp: In function 'char* createArrayBuffer(char*, const QList<QVariant>&, QVariant::Type, short int, ISC_ARRAY_DESC*, QString&, QTextCodec*)':
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:736: error: 'ISC_DATE' was not declared in this scope
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:736: error: expected primary-expression before ')' token
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:736: error: expected ')' before 'buffer'
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:742: error: 'ISC_TIME' was not declared in this scope
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:742: error: expected primary-expression before ')' token
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:742: error: expected ')' before 'buffer'
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:749: error: 'ISC_TIMESTAMP' was not declared in this scope
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:749: error: expected primary-expression before ')' token
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:749: error: expected ')' before 'buffer'
..\..\..\sql\drivers\ibase\qsql_ibase.cpp: In member function 'virtual bool QIBaseResult::prepare(const QString&)':
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:910: error: 'SQL_DIALECT_V6' was not declared in this scope
..\..\..\sql\drivers\ibase\qsql_ibase.cpp: In member function 'virtual bool QIBaseResult::exec()':
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:997: error: 'SQL_INT64' was not declared in this scope
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:1024: error: 'SQL_TIMESTAMP' was not declared in this scope
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:1025: error: 'ISC_TIMESTAMP' was not declared in this scope
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:1025: error: expected primary-expression before ')' token
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:1025: error: expected ')' before 'd'
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:1027: error: 'SQL_TYPE_TIME' was not declared in this scope
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:1028: error: 'ISC_TIME' was not declared in this scope
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:1028: error: expected primary-expression before ')' token
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:1028: error: expected ')' before 'd'
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:1030: error: 'SQL_TYPE_DATE' was not declared in this scope
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:1031: error: 'ISC_DATE' was not declared in this scope
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:1031: error: expected primary-expression before ')' token
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:1031: error: expected ')' before 'd'
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:1061: error: 'SQL_DIALECT_V6' was not declared in this scope
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:1063: error: 'SQL_DIALECT_V6' was not declared in this scope
..\..\..\sql\drivers\ibase\qsql_ibase.cpp: In member function 'virtual bool QIBaseResult::gotoNext(QVector<QVariant>&, int)':
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:1102: error: 'SQL_DIALECT_V6' was notdeclared in this scope
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:1127: warning: enumeration value 'LowPrecisionDouble' not handled in switch
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:1151: error: 'SQL_INT64' was not declared in this scope
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:1178: error: 'SQL_TIMESTAMP' was not declared in this scope
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:1181: error: 'SQL_TYPE_TIME' was not declared in this scope
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:1184: error: 'SQL_TYPE_DATE' was not declared in this scope
..\..\..\sql\drivers\ibase\qsql_ibase.cpp: In member function 'void QIBaseDriver::qHandleEventNotification(void*)':
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:1843: error: 'ISC_ULONG' was not declared in this scope
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:1843: error: expected ';' before 'counts'
..\..\..\sql\drivers\ibase\qsql_ibase.cpp:1844: error: 'counts' was not declared in this scope
NMAKE : fatal error U1077: 'g++' : return code '0x1' Stop.
NMAKE : fatal error U1077: 'C:\WINDOWS\System32\NMAKE.EXE' : return code '0x2' Stop.
Записан
crossly
Гость
« Ответ #9 : Апрель 20, 2010, 10:13 »

каким компилятором собираете ??.... LIBS прописано не правильно у вас...
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #10 : Апрель 20, 2010, 10:21 »

>>каким компилятором собираете ??.
коль скоро используется nmake, то видимо студийным
Записан

Юра.
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #11 : Апрель 20, 2010, 10:24 »

Я так собирал для FireBird'а и MinGW32:
переименовываем fbclient_ms.lib в fbclient.lib
cd %QTDIR%\src\plugins\sqldrivers\ibase
qmake -o Makefile "INCLUDEPATH+=F:\Firebird\Firebird_2_1\include" "LIBS+=F:\Firebird\Firebird_2_1\lib\fbclient_ms.lib"
make

П.С. все пути без пробелов, иначе придётся дополнительно в такие штуки заворачивать:
\"
Записан

Юра.
crossly
Гость
« Ответ #12 : Апрель 20, 2010, 10:42 »

сори.... просто автор топика собирал mingw .... там не корректно указан LIBS .... по поводу второго... да ... не видит инклюдов
Записан
vaychick
Гость
« Ответ #13 : Май 02, 2011, 10:52 »

Тоже долго парился, помогло то, что написоно в вики НО INCLUDEPATH и LIBS нужно ставить вне блока win32

drivers.pri

Код:
contains(sql-drivers, ibase) {
    HEADERS += drivers/ibase/qsql_ibase.h
    SOURCES += drivers/ibase/qsql_ibase.cpp
    
INCLUDEPATH += "C:/Program Files/Firebird/Firebird_2_0/include"
LIBS += "C:/Program Files/Firebird/Firebird_2_0/lib/fbclient_ms.lib"

    unix:LIBS *= -lgds  
    
    win32 {
        !win32-borland:LIBS *= -lfbclient_ms
        win32-borland:LIBS  += fbclient_ms.lib
    }
}

ibase.pro

Код:
TARGET	 = qsqlibase

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

INCLUDEPATH += "C:/Program Files/Firebird/Firebird_2_0/include"
LIBS += "C:/Program Files/Firebird/Firebird_2_0/lib/fbclient_ms.lib"

unix:!contains( LIBS, .*gds.* ):!contains( LIBS, .*libfb.* ):LIBS    *= -lgds

win32:!contains( LIBS, .*gds.* ):!contains( LIBS, .*fbclient.* ) {

    !win32-borland:LIBS *= -lfbclient_ms
    win32-borland:LIBS  += fbclient_ms.lib
}

include(../qsqldriverbase.pri)

иначе будет писать, что не может найти -lfbclient_ms
« Последнее редактирование: Май 02, 2011, 11:17 от vaychick » Записан
vaychick
Гость
« Ответ #14 : Июнь 27, 2011, 09:03 »

Продолжаем тему, вышел новый Qt 4.7.3, для которого тоже нужно собрать QIBASE.
Исходники, к новому Qt в комплекте не идут, скачивал отдельно.

ibase.pro
Код:
TARGET = qsqlibase

SOURCES = main.cpp

INCLUDEPATH += "C:/Program Files/Firebird/Firebird_2_0/include" "C:/QtSDK/Desktop/Qt/4.7.3/mingw/lib"

LIBS += -L"C:/Program Files/Firebird/Firebird_2_0/lib/fbclient_ms.lib"

include(../../../sql/drivers/ibase/qsql_ibase.pri)

include(../qsqldriverbase.pri)

sql\drivers\ibase\qsql_ibase.pri
Код:
HEADERS += $$PWD/qsql_ibase.h
SOURCES += $$PWD/qsql_ibase.cpp

unix {
    !contains(LIBS, .*gds.*):!contains(LIBS, .*libfb.*):LIBS += -lgds
} else {
    !contains(LIBS, .*gds.*):!contains(LIBS, .*fbclient.*) {
        win32-borland:LIBS += gds32.lib
        else:LIBS += -lgds32_ms
    }
}

вывод:

Код:
C:\QtSDK\src\src\plugins\sqldrivers\ibase>make
make -f Makefile.Debug all
make[1]: Entering directory `C:/QtSDK/src/src/plugins/sqldrivers/ibase'
g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-rel
oc -mthreads -Wl -shared -Wl,--out-implib,c:/QtSDK/src/plugins/sqldrivers/libqsq
libased4.a -o ../../../../plugins/sqldrivers/qsqlibased4.dll tmp/obj/debug_share
d/main.o tmp/obj/debug_shared/qsql_ibase.o tmp/obj/debug_shared/moc_qsql_ibase.o
  -L'c:/QtSDK/src/lib' -L'c:/QtSDK/src/lib' tmp/obj/debug_shared/qsqlibased_reso
urce_res.o "-LC:/Program Files/Firebird/Firebird_2_0/lib/fbclient_ms.lib" -lQtSq
ld4 -lQtCored4
c:/qtsdk/mingw/bin/../lib/gcc/mingw32/4.4.0/../../../../mingw32/bin/ld.exe: cann
ot find -lQtSqld4
collect2: ld returned 1 exit status
make[1]: *** [../../../../plugins/sqldrivers/qsqlibased4.dll] Error 1
make[1]: Leaving directory `C:/QtSDK/src/src/plugins/sqldrivers/ibase'
make: *** [debug-all] Error 2

cannot find -lQtSqld4, хотя:
C:\QtSDK\Desktop\Qt\4.7.3\mingw\lib - libQtSql4.a есть
Раньше ругался на fbclient, но я его положил в папку ibase, теперь не может найти отладочную библиотеку, хотя в путях, у него прописано:

Вопрос, как прописать в конфиге, где искать QtSqld4?


Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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