[Qt] Fehler nach "configure -qt-sql-mysql" und "mingw32-make"



  • Hallo,
    habe schon wieder ein Problem mit meinem Qt, ich will die Datenbank-Treiber
    für MySQL benutzen, habe sie auch in dem Verzeichnis /src/plugins/sqldrivers/mysql
    kompiliert. Dabei sind die Dateien "libqsqlmysqld4.a", "libqsqlmysql4.a",
    "qsqlmysql4.dll" und "qsqlmysqld4.dll" entstanden.
    Nun führe ich in Qt Prompt den Befehl "mingw32-make confclean", dann
    "configure -qt-sql-mysql" und als letztes den Befehl "mingw32-make" aus.
    Aber mein Problem liegt darin, dass nach dem letzten Befehl ein Fehler auftritt:

    g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-rel
    oc -mthreads -Wl -shared -Wl,--out-implib,c:\Qt\2010.02.1\qt\lib\libQtSqld4.a -o
     ..\..\lib\QtSqld4.dll object_script.QtSqld.Debug  -L"c:\Qt\2010.02.1\qt\lib" -L
    "c:\Qt\2010.02.1\qt\lib" tmp\obj\debug_shared\QtSqld_resource_res.o -lmysql -lQt
    Cored4
    c:/qt/2010.02.1/mingw/bin/../lib/gcc/mingw32/4.4.0/../../../../mingw32/bin/ld.ex
    e: cannot find -lmysql
    collect2: ld returned 1 exit status
    mingw32-make[2]: *** [..\..\lib\QtSqld4.dll] Error 1
    mingw32-make[2]: Leaving directory `C:/Qt/2010.02.1/qt/src/sql'
    mingw32-make[1]: *** [debug-all] Error 2
    mingw32-make[1]: Leaving directory `C:/Qt/2010.02.1/qt/src/sql'
    mingw32-make: *** [sub-sql-make_default-ordered] Error 2
    

    IgelHaut

    Ps: Ich benutze die Qt-Version 4.6.2.0



  • Das Problem ist nicht der Compiler, sondern der Linker. In Zeile 6/7 ist der wesentliche Teil der Fehlermeldung:

    cannot find -lmysql
    Bist du dabei Qt zu übersetzen, oder ein selbstgeschriebenes Programm ?



  • Qt,
    ich habe nehmlich gerade den MySQL-Driver kompiliert/installiert.



  • ich dachte für den source code muss man blechen? 😕



  • Teile des SourceCodes sind im Verzeichnis qt/src gespeichert, das ist aber nicht der vollständige Code.



  • kopier mal die *.a- und *.dll-Dateien in das lib-Verzeichnis deines Compilers



  • Die erzeugten MySQL-Dateien?



  • Hast du denn mysql selber schon auf deinem Rechner installiert? Also die client-lib? Ich seh nämlich auch bei den Includedirs nicht den für MySql.
    http://doc.qt.nokia.com/4.6/sql-driver.html#how-to-build-the-qmysql-plugin-on-windows



  • Ja



  • IgelHaut schrieb:

    Ja

    Glaub ich jetzt so nicht ganz 😉 Der Installer wird denke ich selbst den PATH so erweitern, dass die MySQL-Lib über jenen zu finden ist. Schau mal deinen PATH an, ob da das mysql-libdir drinnen steht.



  • Das PATH aus dem Qt Prompt?

    Mein MySQL ist in C:\MySQL installiert und das sind die Unterordner include und lib vorhanden.



  • IgelHaut schrieb:

    Das PATH aus dem Qt Prompt?

    Mein MySQL ist in C:\MySQL installiert und das sind die Unterordner include und lib vorhanden.

    Die Umgebungsvariable. Der "Qt Prompt" erweitert nur automatisch die des Systems, so dass die Qt Libs usw. korrekt gefunden werden können.
    Also geh in die Systemsteuerung und setz deinen PATH so, dass auch die bei dir gefundene mysql-lib gefunden werden kann. Also "C:\MySQL\lib".



  • und was soll ich in der systemsteuerung ändern?



  • IgelHaut schrieb:

    und was soll ich in der systemsteuerung ändern?

    Die PATH-Variable.
    Allerdings muss ich zugeben dass ich von Windows nur so viel weiß, wie ich durch Doku-Lesen mitbekommen hab - ich hab kein Windows.
    Wie sieht denn eigentlich die Zeile aus, die du eingegeben hast, um mit qmake das Makefile zu erstellen? Hast du das aus der Doku verwendet (siehe link oben)? Denn da steht ein "LIBS += "XYZ\libmysql.lib", evtl. reicht das ja...



  • Ich habe zum Erstellen des MySQL-Plugins die Zeile

    qmake "INCLUDEPATH+=C:\MySQL\include" "LIBS+=C:\MYSQL\lib\opt\libmysql.lib" mysql.pro
    

    verwendet und beim Configurieren habe ich

    configure -qt-sql-mysql
    

    eingetippt.
    Bei configure --help wurde bei mir auch bei den verfügbaren SQL-Treibern der MySQL-Treiber aufgelistet:

    -no-sql-<driver> ... Disable SQL <driver> entirely, by default none are
                             turned on.
        -qt-sql-<driver> ... Enable a SQL <driver> in the Qt Library.
        -plugin-sql-<driver> Enable SQL <driver> as a plugin to be linked to at run
                             time.
                             Available values for <driver>:
                               mysql
                               psql
                               oci
                               odbc
                               tds
                               db2
     +                         sqlite
                               sqlite2
                               ibase
                             (drivers marked with a '+' have been detected as
                             available on this system)
    

    Denn vor dem Kompilieren des MySQL-Treibers war mysql nicht da.



  • Ich weiß nicht in wie weit qmake Case Sensitive ist (Windows Dateisysteme sind es ja nicht...) aber dein MySQL scheint in "C:\MySQL" zu liegen, die lib gibst du aber mit "C:\MYSQL" an.
    Mach mal das "Y" klein, vllt hilft das.



  • Also das "y" sollte klein sein... hab aus Versehen groß geschrieben.
    Aber das ganze bringt eh nicht, denn das MySQL-Plugin wird ja erstellt, es kommt
    nur ein Fehler beim Kompilieren von Qt.



  • Was heißt denn dieses -lmysql?



  • IgelHaut schrieb:

    Was heißt denn dieses -lmysql?

    das er die libmysql.a und libmysql.dll nicht findet. Daher mein Vorschlag, die in den lib-Ordner deines Compilers zu kopieren. Du hast noch nicht erwähnt, dass du das bereits versucht hättest


Anmelden zum Antworten