mit C++ auf mysql zugreifen



  • ich habe mal versucht mit einem Standartbeispiel unter Windows auf mysql zuzugreifen. Aber die ganzen Befehle wie z.B. mysql_init werden nicht erkannt.
    Beim kompilieren werden diese Befehle als nichtaufgelöste externe Befehle bezeichnet. Die mysql.h wird aber akzeptiert, auch die Variablen MYSQL_RES und MYSQL_ROW werden angenommen. Kann mir bitte jemand sagen, was ich so alles falsch mache?

    Danke Stephan

    #include <windows.h>
    include <time.h> 
    #include <stdio.h> 
    #include <mysql.h> 
    
    int main ()  { 
        MYSQL_RES *mTabelle; 
        MYSQL_ROW mRecord; 
        MYSQL *mConnection, mDB; 
        int mError; 
        mysql_init(&mDB); 
        mConnection = mysql_real_connect(&mDB,"localhost","root","","test",0,0,0); 
        if (mConnection == NULL)  { 
            printf("Es konnte keine Verbindung zur Datenbank hergestellt werden: %s",mysql_error(&mDB)); 
            return 1; 
        } else { 
     printf("Es wurde erfolgreich eine Verbindung hergestellt!"); 
        } 
        mysql_close(mConnection); 
        return 0; 
    }
    


  • Hallo

    bei deiner Fehlermeldung vermute ich, das du die libmysql.lib (oder .a ...) nicht in den Linkerprozeß mit eingebunden hast, was du aber machen must.
    Wie das geht ist IDE-abhängig.

    bis bald
    akari



  • irgendwie schaffe ich es nicht diese Datei einzubinden... 😕
    kannst du mir noch mal weiterhelfen!



  • Hallo

    akari schrieb:

    Wie das geht ist IDE-abhängig.

    Nich wenn du nicht vorher sgst, mit welchem Kompiler/IDE auf welchem OS du arbeitest.

    bis bald
    akari



  • ich benutze im Moment die VC++ Umgebung von 2003. Es ist aber ein leeres Projekt, also ohne Unterstützung von MS, da ich dieses Programm auch mal auf Linux laufen lassen will.



  • kredo1000 schrieb:

    ich benutze im Moment die VC++ Umgebung von 2003. Es ist aber ein leeres Projekt, also ohne Unterstützung von MS, da ich dieses Programm auch mal auf Linux laufen lassen will.

    Dann solltest du vllt. in Erwägung ziehen, den MinGW Compiler zu benutzen (wenn auch nur zum gelegentlichen Testen des Source). Das ist der Port des g++ für Windows und liegt u.a. Code::Blocks und dem MinGW Developer Studio bei.

    MfG

    GPC



  • #pragma comment (lib, libmysql)
    vor den includes ...

    oder in den linker einstellung suchen, irgendwo unter projekt -> eigenschaften, weiß ich nicht auswendig



  • Habe das gleiche Problem, dass die mysql funktionen vom linker nicht gefunden werden. habe aber die mysql library dem Projekt hinzugefügt.

    hier die fehlermeldung von mingw:

    **** Full rebuild of configuration Debug for project mysql ****
    
    make -k clean all 
    rm -rf  ./main.o  ./main.d mysql.exe
    ' '
    'Building file: ../main.cpp'
    'Invoking: GCC C++ Compiler'
    g++ -I"C:/mysql/include" -O0 -g3 -Wall -c -fmessage-length=0 -omain.o ../main.cpp
    'Finished building: ../main.cpp'
    ' '
    'Building target: mysql.exe'
    'Invoking: GCC C++ Linker'
    g++ -L"C:\mysql\lib\opt" -omysql.exe  ./main.o   -lmysql
    ./main.o(.text+0x132): In function `main':
    C:/Programme/eclipse2/workspace/mysql/Debug/../main.cpp:10: undefined reference to `mysql_init@4'
    collect2: ld returned 1 exit status
    make: *** [mysql.exe] Error 1
    make: Target `all' not remade because of errors.
    Build complete for project mysql
    

    mfg silicore



  • Dieser Thread wurde von Moderator/in evilissimo aus dem Forum C++ in das Forum Rund um die Programmierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Dieser Thread wurde von Moderator/in kingruedi aus dem Forum Rund um die Programmierung in das Forum Datenbanken verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Stand vor einiger Zeit vor dem selben Problem, mit VC2005. Installier dir die mysql datenbank von mysql.com. Falls du dieses package von dieser Seite hast: http://tangentsoft.net/mysql++/ lösch es!

    Mit dem Müll kommst du nicht weit, da hing ich auch lange fest. Wie bereits erwähnt, die standard installation von mysql für developer tuts vollkommen!

    Wenn du die mysql datenbank im developer mode installiert hast(so lutsch die datenbank nicht so stark an der performance und ggf. dem akku bei laptops 😉 ). Gehst du in dein projekt und machst folgendes:

    Projekt erstellen
    Auf das Projekt mit Rechtsklick auf Eigenschaften(Properties)
    Linker:
    Bei General
    Debug/(Active): Bei "Additional Libary Directorys" geben wir den Inhalt des /lib/Debug Ordner an, in dem wir MySQL installiert haben.
    Release: Bei "Additional Libary Directorys" geben wir den Inhalt des /lib/opt Ordner aus dem Ordner in dem wir MySQL installiert haben.

    Bei Input...
    .. geben wir als "Additonal Dependcies" die "libmysql.lib" an (ohne Gänsefüschen), sowohl für Debug/Active, als auch für Release.

    C/C++:
    Bei General
    Sowohl für Debug/(Active) und Release wird bei "Addional inlude directorys" der include Ordner angegeben, der mit mysql erstellt wurde.

    Folgende Einstellungen müssen noch gemacht werden, diese waren bei mir richtig voreingestellt:

    C/C++:
    Bei Code Gerneration
    "Runtime Library" für Debug auf "Multi-threaded Debug DLL (/MDd)"
    "Runtime Library" für Release auf "Multi-threaded DLL (/MD)"

    Im Source jetzt noch die <winsock.h> und die <mysql.h> Header includieren.(winsock vor mysql!!!).
    Das leere Projekt sollte sich jetzt compilieren lassen.

    so hats bei mir geklappt.


Anmelden zum Antworten