Mysql: undefined reference
-
Hallo,
ich habe schon an allen Ecken des Internets nach einer Lösung gesucht aber keine Lösung gefunden. Ich habe folgendes Problem:
Ich möchte mit meinem C++ Programm ein Feld aus einer Mysql-Tabelle lesen, jedoch bekomme ich beim kompillieren folgende Fehlermeldung:
...\main.cpp|59|undefined reference to `_imp___ZN3sql5mysql19get_driver_instanceEv'|
Habe ich eventuell vergessen etwas zu inkludieren etc? Habe danach gegoogelt und das Problem soll eine fehlende library sein(es sind aber alle inkludiert). Ich habe das Programm im moment 1:1 von http://dev.mysql.com/doc/connector-cpp/en/connector-cpp-tutorials-background.html übernommen und werde es, sobald das Problem beseitigt ist, abändern und in mein Programm einbauen.
#include <cstdlib> #include <iostream> #include <mysql_connection.h> #include <mysql_driver.h> #include <cppconn/driver.h> #include <cppconn/config.h> #include <cppconn/connection.h> #include <cppconn/statement.h> #include <cppconn/exception.h> using namespace std; using namespace sql; using namespace sql::mysql; int main(void) { try { sql::Driver *driver; sql::Connection *con; sql::Statement *stmt; sql::ResultSet *res; /* Create a connection */ /* Hier tritt der fehler auf: */ driver = sql::mysql::get_driver_instance(); con = driver->connect("tcp://127.0.0.1:3306", "root", "root"); /* Connect to the MySQL test database */ con->setSchema("test"); stmt = con->createStatement(); res = stmt->executeQuery("SELECT 'Hello World!' AS _message"); while (res->next()) { cout << "\t... MySQL replies: "; /* Access column data by alias or column name */ cout << res->getString("_message") << endl; cout << "\t... MySQL says it again: "; /* Access column fata by numeric offset, 1 is the first column */ cout << res->getString(1) << endl; } delete res; delete stmt; delete con; } catch (sql::SQLException &e) { cout << "# ERR: SQLException in " << __FILE__; cout << "(" << __FUNCTION__ << ") on line " << __LINE__ << endl; cout << "# ERR: " << e.what(); cout << " (MySQL error code: " << e.getErrorCode(); cout << ", SQLState: " << e.getSQLState() << " )" << endl; } cout << endl; return EXIT_SUCCESS; }
-
Libraries inkludiert man nicht, du musst gegen sie linken.
-
Ah sorry hab mich falsch ausgedrückt
http://s7.directupload.net/images/140812/g9hir6x2.png
so müsste das eigentlich passen oder?
-
Theoretisch schon. Obs die richtige Bibliothek ist, weiß ich nicht. Hier gibts auch einen Thread zu dem Thema:
-
3. Be sure you got the -m64 set in the Eclipse compiler options too.
Das sagt mir als Anfänger leider gar nichts
PS: ich benutze Codeblocks
-
Benutze auch kein Eclipse, danach kann man aber leicht googeln. Das ist eine Option, um in 64Bit zu bauen. Kann es bei dir ein 32/64 Bit Problem sein, dass die Lib nicht zu deinem Projekt passt?
-
The codeblocks-13.12mingw-setup.exe file includes the GCC compiler and GDB debugger from TDM-GCC (version 4.7.1, 32 bit).
Ich benutze folgenden mysql-connector:
Windows (x86, 64-bit), MSI Installer(mysql-connector-c++-1.1.4-winx64.msi)
Das könnte das Problem sein oder?
Edit: hab die 64bit-Libraries mal gegen 32bit-Libraries ausgetauscht. Immer noch gleiche Fehlermeldung.