mysql++ in Qt einbinden



  • Hallo!

    ich habe glaube ich schon sämtliche seiten in google durchforstet aber finde keine passende info wie ich die mysql++ library http://tangentsoft.net/mysql++/ in ein Qt Projekt einbinden kann.

    wer hat die zeit mir kurz zu beschreiben was zu tun ist?

    als mysql server läuft die version 5.0.67. qt vers 4.6.2 mit mingw (wenn ich das richtige sehe Version: 3.81 + patches from Eli Zaretskii)

    laut doc sollte es mit mingw also keine probleme geben.. nur finde ich keine gute anleitung wie ich die library hinzufüge bzw kompilieren muss...

    alternative: ich wechsele auf visual c++ express 2008
    (laut doc unterstützt es visual c++ 2008, ich nehme an ob express oder nicht ist egal ?)

    danke für eure hilfe!!



  • mysql++ ist doch nur ein Wrapper um die mysql-c-API. Du brauchst einen laufenden mysql-Server.
    Qt bringt eigentlich mit dem QtSql-Modul schon alles mit. Funktioniert im Prinzip genauso wie mysql++, nur mit dem Vorteil, dass es schon auf die Klassen von Qt zugeschnitten ist (QString, QVariant fürs result, ...).
    Und wenn du trotzdem mysql++ verwenden willst, dann mach es einfach. Da gibt es nix zu integrieren. Einfach die mysql++-Lib (falls es eine gibt) bauen, Header includieren, include-directories und lib eintragen, fertig.



  • ja das ist klar.. mysql server läuft ja...

    Qt ist mir einfach zu umfangreich und ich möchte nur standard libs benutzten iostream etc. also unabhängig vom verwendeten programm...

    Einfach die mysql++-Lib (falls es eine gibt) bauen, Header includieren, include-directories und lib eintragen, fertig.

    genau das ist mein problem 🙂

    header includieren "mysql++.h", includepath setzten. und dann die lib.. ja wo finde ich die denn? 😉
    scheint als müsste ich die für mingw erst bauen.. dazu hab ich jetzt auch grad eine readme gefunden.. mit der werd ich es nochmal probieren...



  • also die lib zu bauen will einfach nicht funktionieren.

    ausschnitt aus der readme

    Prerequisite: MySQL C API DLL Import Library

    Before you can build MySQL++ with MinGW, you will need to create  
    a MinGW-compatible import library for MySQL's C API library.  
    Using the current default install path for MySQL and assuming  
    MySQL++ is in c:\\mysql++, the commands to do this are:  
      
    cd C:\\Program Files\\MySQL\\MySQL Server 5.0\\lib\\opt  
    dlltool -k -d c:\\mysql++\\libmysqlclient.def -l libmysqlclient.a  
      
      
    Building the Library and Example Programs  
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
    With the prerequisites above taken care of, you can build MySQL++  
    with this command:  
      
    mingw32-make -f Makefile.mingw  
      
    Notice that we're using the MinGW-specific version of GNU make, not  
    the Cygwin or MSYS versions. Many things will break otherwise: path  
    separator handling, shell commands used by the Makefile, etc.  
      
    Speaking of Cygwin and MSYS, if you have either these or any other  
    Unix emulation environment installed, be sure their executables  
    aren't in the PATH when building MySQL++. MinGW's version of GNU  
    make does some funny things if it thinks it's running in the  
    presence of Unixy tools, which will break the MySQL++ build.  
      
    Once the library is built, you should run the examples. At minimum,  
    run resetdb and simple1.  
      
    Once you're satisfied that the library is working correctly, you can  
    run the install.bat file at the project root to automatically  
    install the library files and headers in subdirectories under  
    c:\\mysql++.
    

    cd C:\Program Files\MySQL\MySQL Server 5.0\lib\opt
    dlltool -k -d c:\mysql++\libmysqlclient.def -l libmysqlclient.a

    was es mit dem cd c:\program files...mysqlserver auf sich hat ist mir nicht klar..
    wenn ich dlltool ausführe bekomme ich eine leere libmysqlclient.a heraus (größe 0 bytes)

    mingw32-make -f Makefile.mingw funktioniert auch nicht

    C:\Qt\2010.02.1\mingw\bin>mingw32-make -f C:\mysql++-3.0.9\Makefile.mingw
    mingw32-make: *** No rule to make target `lib/beemutex.cpp', needed by `mysqlpp_
    beemutex.o'. Stop.

    wo liegt denn der fehler begraben??

    ich glaub ich installier mir jetzt einfach visual c++ express... oder hat jemand auf die schnelle eine antwort was hier den schief läuft? 😉



  • taurus schrieb:

    was es mit dem cd c:\program files...mysqlserver auf sich hat ist mir nicht klar..

    Das ist ein Befehl, den du in deinem Terminal (heißt glaub ich "Eingabeaufforderung" in der Windows-Welt) eingeben musst, um in dein mysql++-source-Verzeichnis zu navigieren. Dazu musst du natürlich den Pfad ("c:\program files\...") durch das Verzeichnis ersetzen, wo deine Sourcen dann auch liegen.



  • dann ist es aber falsch beschrieben... mysql++ hat hier ja nichts mit mysql/lib/opt zu tun (in dem verzeichnis liegt die libmysql.dll und libmysql.lib)

    klar ist natürlich das ich dlltool auf die im mysql++ liegenden dateien anwenden muss (was ja auch klappt nur wird eben die libmysclonnect.a 0byte groß...

    vgl. http://www.tutorials.de/forum/c-c/290504-einbinden-von-mysql-h-und-libmysql-lib-den-compiler.html#post1499343

    ist zwar nicht exakt das gleiche aber dürfte in etwa der selbe weg sein... jedoch ist bei mir die .a datei immer 0 byte... (und das ist ja im endeffekt meine lib die ich einbinde oder? zumindest hab ich eine libwsock.a 😉



  • so aktuell bin ich nun soweit.
    habe diesen thread hier entdeckt
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-100731-and-postdays-is-0-and-postorder-is-asc-and-start-is-0.html

    und so auch die libmysql.a erstellt (nur eben libmysql.dll anstatt libmysqlD)

    wieder: die datei ist 0byte groß...

    EDIT:
    einfach lin einbinden....
    einfach
    LIBS += C:\mysql\lib\opt\libmysql.lib
    INCLUDEPATH += C:\mysql\include

    und es funktioniert..

    man wie einfach ist das denn 😉 ich hantier da mit reimp dlltoll und weiß was ich 😉 und dann probier ich einfach mal die lib einzubinden und es klappt

    *an den kopf klatsch*


Anmelden zum Antworten