2016-04-15 11 views
1

Ich versuche nun, einen Server mit C++ zu implementieren, ich versuche, die Informationen der Benutzer in der Datenbank zu speichern, aber ich stieß auf einige Probleme beim Herstellen einer Verbindung mit der Datenbank. Ich kann nicht mein Programm bauen, weil die folgenden Fehler von Codeblöcken erzeugtkann nicht ordnungsgemäß mit Mariabb verbinden

 
    -------------- Build: Debug in server (compiler: GNU GCC Compiler)--------------- 

    mingw32-g++.exe -Wall -fexceptions -g -lpthread -lmysql -I"D:\Program Files\MariaDB 10.1\include\mysql" -c D:\Projects\server\main.cpp -o obj\Debug\main.o 
    mingw32-g++.exe -L"D:\Program Files\MariaDB 10.1\lib" -o bin\Debug\server.exe obj\Debug\main.o "D:\Program Files (x86)\CodeBlocks\MinGW\lib\libwinpthread.a" "D:\Program Files (x86)\CodeBlocks\MinGW\lib\libws2_32.a" 
    obj\Debug\main.o: In function `main': 
    D:/Projects/server/main.cpp:13: undefined reference to `[email protected]' 
    D:/Projects/server/main.cpp:14: undefined reference to `[email protected]' 
    collect2.exe: error: ld returned 1 exit status 
    Process terminated with status 1 (0 minute(s), 2 second(s)) 
    3 error(s), 3 warning(s) (0 minute(s), 2 second(s)) 

I MariaDB Connector/ODBC 2.0.10 Stable von seiner offiziellen Website heruntergeladen und ich habe viele verschiedene Lösungen ausprobiert, die ich auf dem gefunden Internet, aber es funktioniert immer noch nicht. Kann mir jemand helfen, das zu lösen? Jede Antwort wird geschätzt.

+0

Ihr Problem sind die Zeilen 13 und 14 und der Fehler ist "undefined reference". Suchen Sie nach diesem Fehler und Sie werden viele Informationen finden. Anscheinend möchte Ihr Programm eine Funktion verwenden, die es nicht finden kann. – Cat

+0

Danke für die Antwort, mysql_init soll in mysql.h definiert und in libmysql.lib implementiert werden und ich habe den Pfad, der mysql.h und libmysql.lib enthält, in die Suchverzeichnisse in den Einstellungen der Codeblöcke eingefügt. – SolskGaer

+0

Haben Sie die Bibliothek auch verlinkt? "Includes" erlauben nur, dass es kompiliert wird, aber Sie müssen dem Linker mitteilen, dass er Ihr Programm mit libmysql verlinkt, das irgendwo auf Ihrem Rechner installiert wurde. – Cat

Antwort

1

Der GNU-Linker reagiert auf die Reihenfolge der Optionen. Wenn Sie libmysql in Haupt verwenden, Option -lmysql wird nachmain.o

UPD gehen: ich bemerkt, dass Sie auch nicht Libs in der zweiten Verbindungs ​​String haben. In der ersten Zeichenkette ist es nutzlos, zur zweiten hinzuzufügen, wo die tatsächliche Verknüpfung stattfindet.