C++ MySQL-Verbindung aufbauen
-
Die aktuellen Fehlermeldungen:
1>------ Erstellen gestartet: Projekt: MySql2, Konfiguration: Debug Win32 ------ 1> MySql2.cpp 1>MySql2.obj : error LNK2028: Nicht aufgelöstes Token (0A00005B) ""extern "C" void __stdcall mysql_close(struct st_mysql *)" (?mysql_close@@$$J14YGXPAUst_mysql@@@Z)", auf das in Funktion ""int __clrcall main(cli::array<class System::String ^ >^)" (?main@@$$HYMHP$01AP$AAVString@System@@@Z)" verwiesen wird. 1>MySql2.obj : error LNK2028: Nicht aufgelöstes Token (0A00005C) ""extern "C" char const * __stdcall mysql_error(struct st_mysql *)" (?mysql_error@@$$J14YGPBDPAUst_mysql@@@Z)", auf das in Funktion ""int __clrcall main(cli::array<class System::String ^ >^)" (?main@@$$HYMHP$01AP$AAVString@System@@@Z)" verwiesen wird. 1>MySql2.obj : error LNK2028: Nicht aufgelöstes Token (0A00005D) ""extern "C" void __stdcall mysql_free_result(struct st_mysql_res *)" (?mysql_free_result@@$$J14YGXPAUst_mysql_res@@@Z)", auf das in Funktion ""int __clrcall main(cli::array<class System::String ^ >^)" (?main@@$$HYMHP$01AP$AAVString@System@@@Z)" verwiesen wird. 1>MySql2.obj : error LNK2028: Nicht aufgelöstes Token (0A00005F) ""extern "C" char * * __stdcall mysql_fetch_row(struct st_mysql_res *)" (?mysql_fetch_row@@$$J14YGPAPADPAUst_mysql_res@@@Z)", auf das in Funktion ""int __clrcall main(cli::array<class System::String ^ >^)" (?main@@$$HYMHP$01AP$AAVString@System@@@Z)" verwiesen wird. 1>MySql2.obj : error LNK2028: Nicht aufgelöstes Token (0A000060) ""extern "C" struct st_mysql_res * __stdcall mysql_store_result(struct st_mysql *)" (?mysql_store_result@@$$J14YGPAUst_mysql_res@@PAUst_mysql@@@Z)", auf das in Funktion ""int __clrcall main(cli::array<class System::String ^ >^)" (?main@@$$HYMHP$01AP$AAVString@System@@@Z)" verwiesen wird. 1>MySql2.obj : error LNK2028: Nicht aufgelöstes Token (0A000061) ""extern "C" int __stdcall mysql_query(struct st_mysql *,char const *)" (?mysql_query@@$$J18YGHPAUst_mysql@@PBD@Z)", auf das in Funktion ""int __clrcall main(cli::array<class System::String ^ >^)" (?main@@$$HYMHP$01AP$AAVString@System@@@Z)" verwiesen wird. 1>MySql2.obj : error LNK2028: Nicht aufgelöstes Token (0A000062) ""extern "C" struct st_mysql * __stdcall mysql_real_connect(struct st_mysql *,char const *,char const *,char const *,char const *,unsigned int,char const *,unsigned long)" (?mysql_real_connect@@$$J232YGPAUst_mysql@@PAU1@PBD111I1K@Z)", auf das in Funktion ""int __clrcall main(cli::array<class System::String ^ >^)" (?main@@$$HYMHP$01AP$AAVString@System@@@Z)" verwiesen wird. 1>MySql2.obj : error LNK2028: Nicht aufgelöstes Token (0A000063) ""extern "C" struct st_mysql * __stdcall mysql_init(struct st_mysql *)" (?mysql_init@@$$J14YGPAUst_mysql@@PAU1@@Z)", auf das in Funktion ""int __clrcall main(cli::array<class System::String ^ >^)" (?main@@$$HYMHP$01AP$AAVString@System@@@Z)" verwiesen wird. 1>MySql2.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""extern "C" void __stdcall mysql_close(struct st_mysql *)" (?mysql_close@@$$J14YGXPAUst_mysql@@@Z)" in Funktion ""int __clrcall main(cli::array<class System::String ^ >^)" (?main@@$$HYMHP$01AP$AAVString@System@@@Z)". 1>MySql2.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""extern "C" char const * __stdcall mysql_error(struct st_mysql *)" (?mysql_error@@$$J14YGPBDPAUst_mysql@@@Z)" in Funktion ""int __clrcall main(cli::array<class System::String ^ >^)" (?main@@$$HYMHP$01AP$AAVString@System@@@Z)". 1>MySql2.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""extern "C" void __stdcall mysql_free_result(struct st_mysql_res *)" (?mysql_free_result@@$$J14YGXPAUst_mysql_res@@@Z)" in Funktion ""int __clrcall main(cli::array<class System::String ^ >^)" (?main@@$$HYMHP$01AP$AAVString@System@@@Z)". 1>MySql2.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""extern "C" char * * __stdcall mysql_fetch_row(struct st_mysql_res *)" (?mysql_fetch_row@@$$J14YGPAPADPAUst_mysql_res@@@Z)" in Funktion ""int __clrcall main(cli::array<class System::String ^ >^)" (?main@@$$HYMHP$01AP$AAVString@System@@@Z)". 1>MySql2.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""extern "C" struct st_mysql_res * __stdcall mysql_store_result(struct st_mysql *)" (?mysql_store_result@@$$J14YGPAUst_mysql_res@@PAUst_mysql@@@Z)" in Funktion ""int __clrcall main(cli::array<class System::String ^ >^)" (?main@@$$HYMHP$01AP$AAVString@System@@@Z)". 1>MySql2.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""extern "C" int __stdcall mysql_query(struct st_mysql *,char const *)" (?mysql_query@@$$J18YGHPAUst_mysql@@PBD@Z)" in Funktion ""int __clrcall main(cli::array<class System::String ^ >^)" (?main@@$$HYMHP$01AP$AAVString@System@@@Z)". 1>MySql2.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""extern "C" struct st_mysql * __stdcall mysql_real_connect(struct st_mysql *,char const *,char const *,char const *,char const *,unsigned int,char const *,unsigned long)" (?mysql_real_connect@@$$J232YGPAUst_mysql@@PAU1@PBD111I1K@Z)" in Funktion ""int __clrcall main(cli::array<class System::String ^ >^)" (?main@@$$HYMHP$01AP$AAVString@System@@@Z)". 1>MySql2.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""extern "C" struct st_mysql * __stdcall mysql_init(struct st_mysql *)" (?mysql_init@@$$J14YGPAUst_mysql@@PAU1@@Z)" in Funktion ""int __clrcall main(cli::array<class System::String ^ >^)" (?main@@$$HYMHP$01AP$AAVString@System@@@Z)". 1>D:\Visual Studio 2010\Projects\Test\MySql2\Debug\MySql2.exe : fatal error LNK1120: 16 nicht aufgelöste externe Verweise. ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
-
Tausche ein
#pragma comment( lib, "mysqlclient.lib" )
gegen
#pragma comment( lib, "libmysql.lib" )
BTW: Ich seh' erst jetzt, daß ich mich ins C++/CLI-Forum verirrt hab'... Machst Du das mit Absicht!?
-
Die änderung löst das Problem nicht, habe so den skript:
// MySql.cpp: Hauptprojektdatei. #pragma comment( lib, "libmysql.lib" ) //#pragma comment (lib,"advapi32") //#pragma comment (lib,"wsock32") #include "stdafx.h" #include <my_global.h> #include <mysql.h> using namespace System; int main(array<System::String ^> ^args) { MYSQL *conn; MYSQL_RES *res; MYSQL_ROW row; char *server = "127.0.0.1"; char *user = "root"; char *password = "++++"; char *database = "test"; char query[] = "SHOW VARIABLES"; /* init mysql */ conn = mysql_init(NULL); /* connect to database */ if ( mysql_real_connect(conn, server, user, password, database, 0, NULL, 0) ) { /* execute query mysql_query gibt 0 zurück wenn alles ok ist */ if ( !mysql_query(conn, query)) { /* Result abholen */ res = mysql_store_result(conn); /* Result durchlaufen */ while ((row = mysql_fetch_row(res)) != NULL) { OutputDebugStringA(row[0]); OutputDebugStringA("="); OutputDebugStringA(row[1]); OutputDebugStringA("\n"); } /* Result wieder freigeben */ mysql_free_result(res); } else { OutputDebugStringA("Query failed! "); OutputDebugStringA(mysql_error(conn)); OutputDebugStringA("\n"); } } else { OutputDebugStringA("Connection failed! "); OutputDebugStringA(mysql_error(conn)); OutputDebugStringA("\n"); } /* close connection */ mysql_close(conn); }
Wie meinst du das ob ich das mit Absicht mache?
-
Niklasg schrieb:
Die änderung löst das Problem nicht, habe so den skript:
Linkt und läuft bei mir mit einem bis auf Include- und Libraryverzeichnisse unberührten C++/CLI-Projekt in CS 2010 tadellos. Schmeiß das Projekt weg, und versuchs in einem jungfräulichen nochmal.
Niklasg schrieb:
Wie meinst du das ob ich das mit Absicht mache?
Ob Du absichtlich C++/CLI benutzt... ?
-
Erst wenn man die Datei includet hat werden die Fehlermeldungen angezeigt.
Warum sollte ich kein C++/CLI benutzen?
-
Niklasg schrieb:
Erst wenn man die Datei includet hat werden die Fehlermeldungen angezeigt.
Bahnhof. Welche Datei wo inkludiert? Welche Fehlermeldungen?
Niklasg schrieb:
Warum sollte ich kein C++/CLI benutzen?
Gegenfrage: Warum benutzt Du nicht C++ oder C#? Warum ausgerechnet C++/CLI?
-
Ich habe schon mehrmals ein neues Projekt angelegt, was aber nichts gebracht hat. Die Fehlermeldungen sind immer noch die alten.
Ich nehme C++/CLI weil ich damals mir ein Buch gekauft habe und somit darauf kam. Aber auch wenn ich den Skript in einem reinem C++ Projekt anlege kommt die gleiche Fehlermeldung.
-
Niklasg schrieb:
Ich habe schon mehrmals ein neues Projekt angelegt, was aber nichts gebracht hat. Die Fehlermeldungen sind immer noch die alten.
Ich hab' Deinen Code genommen, in ein neues Projekt geworfen, die Include- und Libraryverzeichnisse für MySQL in den Projekteinstellungen eingetragen, die
libmysql.dll
ins Debug-Verzeichnis des Projekts kopiert,[Strg]
+[F5]
gedrückt, und voila!Was Du mit "Erst wenn man die Datei includet hat werden die Fehlermeldungen angezeigt." meinst versteh' ich immer noch nicht.
Niklasg schrieb:
Ich nehme C++/CLI weil ich damals mir ein Buch gekauft habe und somit darauf kam.
Ok, das ist IMHO kein guter Grund für C++/CLI. Aber vielleicht sehen das andere anders. ... glaub' ich aber nicht.
-
Welche MySQL Version benutzt du?
Diesen Satz verstehe ich selbst nicht war in dem Moment falsch formuliert.Naja jeder hat andere Vorlieben
-
Niklasg schrieb:
Welche MySQL Version benutzt du?
Kann ich Dir erst um frühestens 9 genau sagen. Aber innerhalb 5.x sollt das für Dein Problem ziemlich wurscht sein...
-
Ich benutze die Version 5.1.59 , und als IDE benutze ich den Microsoft Visual C++ 2010 Editor. Ich habe eine Standart CLR-Konsolenanwendung erstellt und den Code reinkopiert. Dann habe ich die Linker- und Incude-Verzeichnisse angepasst und habe wie im code die *.lib hnzugefügt.
Aber leider kommt immer die gleiche Fehlermeldung.
-
Also ich tippe immer noch darauf, daß du nicht den richtigen Pfad angegeben hast (oder aber daß dort nicht die richtige LIB-Datei liegt). Hast du das nochmal genau geprüft?
Edit: Und so wie Swordfish schon geschrieben hat, nimm ein natives C++ Projekt (Konsolenanwendung).
-
@Swordfish
kannst du mir vielleicht das Projekt was du angelegt hast mir schicken per E-Mail?Dann hätte ich einen vergleich und könnte den Fehler finden.
-
Niklasg schrieb:
@Swordfish
kannst du mir vielleicht das Projekt was du angelegt hast mir schicken per E-Mail?Niklasg schrieb:
Dann hätte ich einen vergleich und könnte den Fehler finden.
Die IMHO einzigen Fehlerquellen hat Dir Th69 schon genannt.
Niklasg schrieb:
Welche MySQL Version benutzt du?
Server version: 5.5.16 MySQL Community Server (GPL)
-
@Swordfish
Danke fürs hochladen. Wo müssen jetzt die Daten hin (*.lib und HeaderDateien)?
-
Ich hab' im Projekt die Verzeichnisse wie bei einer Standardinstallation von MySQL angegeben:
C:\Program Files (x86)\MySQL\MySQL Server 5.5\include
C:\Program Files (x86)\MySQL\MySQL Server 5.5\lib
-
@Swordfish
Danke so hat es funktioniert, es lag daran das ich die lib in dem Ordner C:\Program Files (x86)\MySQL\MySQL Server 5.5\lib\debug genommen habe.Noch eine Nebenfrage kann man das vorkompilieren der Header nachträglich ausschalten?
-
Project Properties
->Configuration Properties
->C/C++
->Precompiled Headers
-
Ich bedanke mich schon einmal für die Umfangreiche Hilfe, ich melde mich wenn ich noch ein Problem habe.
LG Niklas
EDIT: Mir ist eine Frage eingefallen
Wie funktioniert eine einfache SELECT Abfrage habe die Query angepasst aber bekomme kein Resultat. Welche Variable muss ich auslesen?
-
such dir eins der tutorials aus
http://www.google.de/search?source=hp&q=sql+tutorial&btnG=Sucheund lerne sql, das wirst du ab jetzt dauernd brauchen