MySQL-Datenbank Anbindung mit C
-
Hallo
ich habe Probleme mein kleines Programm mit einer MySQL-DB zu verbinden.
Beim Kompilieren kommt so ein seltsamer Fehler#include "stdafx.h" /* System-Includedateien */ #include <stdio.h> /* C-Standard Ein-/Ausgabe-Bibliothek einfuegen */ #include <windows.h> #include "mysql.h" //#include "my_global.h" <- die existiert garnicht auf meinem Rechner :O int main( void ) /* Hauptfunktion main */ { /* ****************** */ MYSQL *my; my = mysql_init(NULL); if(my == NULL) { fprintf(stderr, "Fehler beim Initialisieren \n"); } while ( getchar() != '\n' ); /* Auf Return-Taste warten */ return 0; } /* main() */
Beim Kompilieren mit Visual C++ bekomm ich dann diesen Fehler:
`Kompilieren...
stdafx.cpp
Kompilieren...
AssemblyInfo.cpp
ForumPost.cpp
Code wird generiert...
Ressourcen werden kompiliert...
Microsoft (R) Windows (R) Resource Compiler Version 6.1.6723.1
Copyright (C) Microsoft Corporation. All rights reserved.
Verknüpfen...
ForumPost.obj : error LNK2028: Nicht aufgelöstes Token (0A000015) ""extern "C" struct st_mysql * __stdcall mysql_init(struct st_mysql *)" (?mysql_init@@$$J14YGPAUst_mysql@@PAU1@@Z)", auf das in Funktion ""int __cdecl main(void)" (?main@@$$HYAHXZ)" verwiesen wird.
ForumPost.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 __cdecl main(void)" (?main@@$$HYAHXZ)".
C:\Users\Johann\Desktop\ForumPost\Debug\ForumPost.exe : fatal error LNK1120: 2 nicht aufgelöste externe Verweise. `
**
Also was ich bisher gemacht habe ist folgendes:**mir noch zusätzlich zum MySQL Community Server den Connector/C (libmysql) runtergeladen von http://www.mysql.de/downloads/
den Pfad "C:\Program Files\MySQL\MySQL Connector C 6.0.2\include" unter
ALT + F7 -> Konfigurationseigenschaften -> C/C++ -> Zusätzliche Includeverzeichnisse eingefügt (für die mysql.h)den Pfad "C:\Program Files\MySQL\MySQL Connector C 6.0.2\lib\opt\libmysql.lib"
auch unter Konfigurationseigenschaften -> Linker -> Allgemein-> Zusätzliche Bibliotheksverzeichnisse eingefügt, um die Bibliothek libmysql.lib bekannt zu machendie libmySQL.dll in den system32 Ordner kopiert, laut
http://openbook.galileocomputing.de/c_von_a_bis_z/024_c_mysql_004.htm#mj4632eac10f7fea468ccb98a96dd77456
musste das soVielen Dank :p
JohannEdit:
Wenn ich folgende Zeilen auskommentier, lässt es sich aber problemlos kompilieren:MYSQL *my; // my = mysql_init(NULL); // if(my == NULL) // { // fprintf(stderr, "Fehler beim Initialisieren \n"); // }
-
Ich kenne mich mit VC++ nicht aus, aber:
den Pfad "C:\Program Files\MySQL\MySQL Connector C 6.0.2\lib\opt\libmysql.lib"
auch unter Konfigurationseigenschaften -> Linker -> Allgemein-> Zusätzliche Bibliotheksverzeichnisse eingefügt, um die Bibliothek libmysql.lib bekannt zu machenDas klingt falsch. Du solltest das Verzeichnis hinzufügen, nicht den vollständigen Pfad zur Library (.lib-File) und irgendwo musst Du einstellen können, dass zu dieser Library gelinkt werden soll.
-
Hallo,
ich habe gleiches Problem nur das ich schon einiges probiert habe.ich habe die lib beim linker und das verzeichnis angegeben und beim compiler auch den pfad zu den includes.
ich habe es auch schon mit den 64bit apis und den 32bit apis versucht da ich win7 prof 64bit habe
irgendwo habe ich auch gelesen man soll die libmysql.dll in das system32 kopieren, hat alles nicht geholfen
das ganze spielt sich im vs++ 2010 ab, ich hoffe die informationen reichen
was ist denn eine weiter mögliche Fehlerquelle?