[Linker Fehler] Unresolved external ... bei MySQL++ und BCB5



  • Hallo!

    Versuche mich gerade an Mysql++ und BCB5.

    Die Anweisungen für die MySQL++Installation habe ich so gemacht,
    wie's verlangt wurde. Auch habe ich dem Projekt die ganzen
    zusätzlichen Ordner im Projekt|Optionen|Verzeichnisse ... eingestellt,
    so das BCB auch auf die neuen Dateien zugreifen kann.

    Leider bekomme ich beim Ausführen des Codes:

    #include <mysql.h>
    #include <conio.h>
    #include <stdio.h>
    #include <windows.h>
    
    int main(int argc, char* argv[])
    {
       MYSQL_RES *result;
       MYSQL_ROW row;
       MYSQL *connection, mysql;
       int state;
    
       mysql_init(&mysql);
       connection = mysql_real_connect
                   (&mysql,"localhost","katyes","xxx","termin",0,0,0);
    
       if(connection  == 0)
       {
          printf(mysql_error(&mysql));
          return 1;
       }
    
       state = mysql_query(connection, "SELECT * FROM termin");
       if(state!=0)
       {
          printf(mysql_error(connection));
          return 1;
       }
    
       result = mysql_store_result(connection);
       printf("Zeilen: %d\n", mysql_num_rows(result));
       while ((row = mysql_fetch_row(result)) != 0)
       {
          printf("id: %s, val: %s\n",
          (row[0] ? row[0]: "NULL"),
          (row[1] ? row[1]: "NULL"));
       }
    
       mysql_free_result(result);
       mysql_close(connection);
       getch();
    }
    

    immer diesselben Fehlermeldungen : 😕

    [Linker Fehler] Unresolved external '_mysql_init' referenced from H:\BORLAND\CBUILDER5\PROJECTS\VERSUCH1\UNIT1.OBJ
    [Linker Fehler] Unresolved external '_mysql_real_connect' referenced from H:\BORLAND\CBUILDER5\PROJECTS\VERSUCH1\UNIT1.OBJ
    [Linker Fehler] Unresolved external '_mysql_query' referenced from H:\BORLAND\CBUILDER5\PROJECTS\VERSUCH1\UNIT1.OBJ
    [Linker Fehler] Unresolved external '_mysql_error' referenced from H:\BORLAND\CBUILDER5\PROJECTS\VERSUCH1\UNIT1.OBJ
    [Linker Fehler] Unresolved external '_mysql_store_result' referenced from H:\BORLAND\CBUILDER5\PROJECTS\VERSUCH1\UNIT1.OBJ
    [Linker Fehler] Unresolved external '_mysql_num_rows' referenced from H:\BORLAND\CBUILDER5\PROJECTS\VERSUCH1\UNIT1.OBJ
    [Linker Fehler] Unresolved external '_mysql_fetch_row' referenced from H:\BORLAND\CBUILDER5\PROJECTS\VERSUCH1\UNIT1.OBJ
    [Linker Fehler] Unresolved external '_mysql_free_result' referenced from H:\BORLAND\CBUILDER5\PROJECTS\VERSUCH1\UNIT1.OBJ
    [Linker Fehler] Unresolved external '_mysql_close' referenced from H:\BORLAND\CBUILDER5\PROJECTS\VERSUCH1\UNIT1.OBJ

    Praktisch also für jede MySQL-Funktion.

    Ich weiss, dass viele schon diese Linker-Probleme hatten,
    nur leider hat bisher kein Thread oder keine sonstige Internetseiten
    irgendwas daran geändert.

    Diese MySQL++ Dateien sind ja schon getestet und bei anderen scheint
    dies ja auch zu funktionieren... an denen hab ich auch nicht rumgeschraubt.

    Wer kann mir helfen?

    Vielleicht findet sich ja auch jemand, der mit BCB und MySQL++
    ähnliche Erfahrungen gemacht hat.



  • Ich bastle gerade an einem kleinen Tutorial zu eben dem Thema "Zugriff auf den MySQL-Server mit C/C++". Leider ist das Ganze noch in der Entwicklung, aber erste Beiträge findest du schon auf meiner Homepage [url] http://members.aol.com/Triadator/index.htm [/url].

    Die C-Library von MySQL ist klar auf Visual C++ ausgerichtet, und mit diesem Compiler ist das ganze MySQL-Paket auch compiliert. Es geht aber trotzdem mit Borland. Ich habe es allerdings nur mit dem freien BCC 5.5 auf der Kommandozeilenebene probiert, und weils da geht, sollte es mit der IDE doch wohl auch gehen. Notfalls wechselst du einfach in den bin-Ordner des Borland-Compilers und rufst den bcc32 von Hand auf.

    Aus den Fehlermeldungen ist klar ersichtlich, daß der Linker die MySQL-Library nicht gefunden hat. Letztlich mußt du noch folgende Schritte tun (das Einbinden der Headerdatei klappt ja schon mal):
    - mit dem Programm 'coff2omf.exe' mußt du die 'libmysql.lib' (ist in c:\mysql\lib\opt) in ein Borland-komtatibles Format umwandeln
    - das Ergebnis kopierst du am besten gleich in den lib-Ordner des Borland-Compilers
    - diese Library mußt du noch als Projektdatei anmelden
    - die 'datei 'libmysql.dll', ebenfalls aus c:\mysql\lib\libmysql', muß in ein Verzeichnis gelegt werden, wo überlicherweise nach DLLs gesucht wird, z. B. nach c:\windows\system32 oder ähnlich.



  • Hallo Triadator,

    dickes fettes DANKESCHÖN 🙂 für Deinen schnellen und vor allem korrekten Beitrag. Ich hab Deine Seiten durchgelesen, alles erstmal mit der Konsole nachvollzogen und es hat geklappt.

    Dann bin ich auch auf den Fehler gekommen (aber das war reiner Zufall), also anstatt:

    #include <mysql.h>  //oben --> FALSCH!!!
    #include <windows.h>
    ...
    

    muss man:

    #include <windows.h>
    #include <mysql.h>  //nach <windows.h> setzen!!
    ...
    

    diese Reihenfolge beachten!

    Vielleicht kannste das irgendwann auch in Deine Seiten mit unterbringen,
    bin zukünftig bestimmt nicht die letzte gewesen...

    Also nochmal danke und viel Erfolg für Deine Website!

    [ Dieser Beitrag wurde am 12.03.2003 um 01:48 Uhr von katyes editiert. ]

    [ Dieser Beitrag wurde am 12.03.2003 um 01:48 Uhr von katyes editiert. ]


Anmelden zum Antworten