Seite 1 von 1

Fehler bei der Komillierung des Firebird Database Treiber

Verfasst: 13. April 2010 13:57
von Scary Hallo
Hallo

ich weiß das Thema gab's schon ein paar mal hier. Trotzdem. Ich komme irgendwie nicht weiter.
Also ich versuche den QIBASE-Treiber zu Kompillieren. Und zwar nach folgender Anleitung:
http://doc.trolltech.com/4.5/sql-drive ... interbase
Ich bekomme aber folgende Fehlermeldung:

Code: Alles auswählen

mingw32-make -f Makefile.Debug all
mingw32-make[1]: Entering directory `C:/Qt/2010.02.1/qt/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\2010.02.1\qt\plugins\sqldrivers\
libqsqlibased4.a -o ..\..\..\..\plugins\sqldrivers\qsqlibased4.dll tmp/obj/debug
_shared/main.o tmp/obj/debug_shared/qsql_ibase.o tmp/obj/debug_shared/moc_qsql_ibase.o  -L"c:\Qt\2010.02.1\qt\lib" -L"c:\Qt\2010.02.1\qt\lib" tmp\obj\debug_shared\qsqlibased_resource_res.o -lfbclient -lQtSqld4 -lQtCored4
c:/qt/2010.02.1/mingw/bin/../lib/gcc/mingw32/4.4.0/../../../../mingw32/bin/ld.exe: cannot find -lfbclient
collect2: ld returned 1 exit status
mingw32-make[1]: *** [..\..\..\..\plugins\sqldrivers\qsqlibased4.dll] Error 1
mingw32-make[1]: Leaving directory `C:/Qt/2010.02.1/qt/src/plugins/sqldrivers/ibase'
mingw32-make: *** [debug-all] Error 2
Also es wird "-lfbclient" nicht gefunden. Wo sollte die denn sein?

Ich arbeite unter Windows-XP und QT 2010.02.1

Wäre schön, wenn mir jemand weiter helfen könnte.

Verfasst: 14. April 2010 09:01
von Scary Hallo
OK. Habe es jetzt kompilliert bekommen.
Geholfen hat mir folgende Seite:

http://www.qtcentre.org/threads/23382-T ... post118796

im 'plugins\sqldivers'-Verzeichnis sind jetzt folgende Dateien:
  • libqsqlibase4.a
    libqsqlibased4.a
    qsqlibase4.dll
    qsqlibased4.dll
Trotzdem bekomme ich folgende Meldung:

Code: Alles auswählen

QSqlDatabase: QIBASE driver not loaded
QSqlDatabase: available drivers: QSQLITE QODBC3 QODBC
Kann mir jemand helfen?

Verfasst: 14. April 2010 13:36
von TSS
Beim MySQL-Plugin ist es so, dass man noch eine dll benötigt. Vielleicht ist das hier auch der Fall? Die dll kann man dann z.B. in das bin-Verzeichnis von Qt stecken.

Verfasst: 14. April 2010 13:55
von Scary Hallo
Ja. Das Glaube ich auch. Nur welche? Habe PATH so geändert, dass er das firebird-bin-Verzeichnis enthält. Dann geht's.
Habe hier
http://www.qtforum.org/article/32241/co ... post104395
Hilfe gefunden.

Verfasst: 14. April 2010 14:24
von Scary Hallo
OK. An alle, die in die gleiche Falle tappen.
Zur Runtime muss die fbclient.dll gefunden werden. Also darauf achten das es im PATH ist. Oder ins Verzeichnis kopieren, in dem die 'exe' ist.

Verfasst: 26. November 2010 14:33
von Uncopy
Scary Hallo hat geschrieben:OK. An alle, die in die gleiche Falle tappen.
Für alle, die die Compile-Time-Falle kennen: :? -- ich habe gerade eine Odyssee hinter mir. Auch mir hat http://www.qtcentre.org/threads/23382-T ... post118796 letztlich geholfen (und zwar nur bei striktest möglicher Befolgung!)...
...aber ich würde nun doch zu gerne verstehen: Was läuft da eigentlich ab?
Ich vermute, dass zur Übersetzung sowohl der Pfad zur *.lib als auch zur *.dll notwendig ist, weil beide gebraucht werden, daher auch die Angabe von fbclient und fbclient_ms (sicher so nur für Übersetzungen mit VC oder WinGW geeignet), wobei fbclient für fblient.dll und fbclient_ms für fbclient_ms.lib stehen. Kann das jemand bestätigen oder gar Hintergründe dafür nennen? Oder meine (kaffeesatzleserischen) Annahmen widerlegen bzw. zurechtrücken?

Vielen Dank im Voraus für jedes Fünkchen der Erhellung!
...denn nachdem ich es nun mit Firebird 2.5 geschafft habe, liegt dasselbe für Firebird 1.0.3 (ja, lacht nur!) noch immer vor mir.