# MySQL mit Code::Blocks



## yax (31. August 2011)

Hallo,

Ich bin nun in meinem Lehrbuch über C am Kapitel MySQL und C angekommen. Doch um die ersten Programm zu schreiben muss MySQL richtig installiert sein. Meiner Meinung nach habe ich das auch, doch irgendwie funtkioniert die ausführung trotzdem nicht. Ich benutze Code::Blocks, und bekomme immer folgende Fehler:


```
error: static declaration of 'rint' follows non-static declaration|
||=== Build finished: 1 errors, 0 warnings ===|
```

Hier mein Programm:

```
#include <stdio.h>
#include <stdlib.h>
#ifdef __WIN32__
  #include "my_global.h"
  #include "mysql.h"
#else
  #include <mysql.h>
#endif

int main(void) {
  MYSQL *my;
  //Handle initialisieren
  my = mysql_init(NULL);
  if(my == NULL) {
    fprintf(stderr, "Initialisierung fehlgeschlagen!\n");
    return EXIT_FAILURE;
  }

  //Mit dem Server verbinden
  if( mysql_real_connect(
       my,      //Zeiger auf MYSQL-Handler
       NULL,    //Host-Name
       NULL,    //User-Name
       NULL,    //Passwort für user_name
       NULL,    //Name der Datenbank
       0,       //Port (default=0)
       NULL,    //Socket (defult=NULL)
       0        //Keine Flags
       ) == NULL) {
    fprintf(stderr, "Fehler mysql_real_connect(): %u (%s)\n", mysql_errno(my), mysql_error(my));
  } else
    printf("Erfolgreich mit dem MySQL-Server verbunden\n");

  //Hier befindet sich der Code für die Arbeit mit MySQL

  //Verbindung trennen
  mysql_close(my);
  return EXIT_SUCCESS;
}
```

Ich hoffe mir kann jemand helfen  Schonmal danke im vorraus 

Gruß yax


----------



## yax (31. August 2011)

Ich habe meinen Code nocheinmal beendet, und jetzt bekomme ich eine andere Fehlermeldung:


```
obj\Debug\mysql1.o||In function `main':|
|12|undefined reference to `mysql_init@4'|
|19|undefined reference to `mysql_real_connect@32'|
|29|undefined reference to `mysql_error@4'|
|29|undefined reference to `mysql_errno@4'|
|36|undefined reference to `mysql_close@4'|
||=== Build finished: 5 errors, 0 warnings ===|
```

und hier mein "neuer" Code:

```
#include <stdio.h>
#include <stdlib.h>
#ifdef __WIN32__
  #include <windows.h>
#endif
  #include <mysql.h>


int main(void) {
  MYSQL *my;
  //Handle initialisieren
  my = mysql_init(NULL);
  if(my == NULL) {
    fprintf(stderr, "Initialisierung fehlgeschlagen!\n");
    return EXIT_FAILURE;
  }

  //Mit dem Server verbinden
  if( mysql_real_connect(
       my,      //Zeiger auf MYSQL-Handler
       NULL,    //Host-Name
       NULL,    //User-Name
       NULL,    //Passwort für user_name
       NULL,    //Name der Datenbank
       0,       //Port (default=0)
       NULL,    //Socket (defult=NULL)
       0        //Keine Flags
       ) == NULL) {
    fprintf(stderr, "Fehler mysql_real_connect(): %u (%s)\n", mysql_errno(my), mysql_error(my));
  } else
    printf("Erfolgreich mit dem MySQL-Server verbunden\n");

  //Hier befindet sich der Code für die Arbeit mit MySQL

  //Verbindung trennen
  mysql_close(my);
  return EXIT_SUCCESS;
}
```


----------



## sheel (31. August 2011)

Hi

zum zweiten Beitrag: Linkerfehler.
Liegt nicht am Code, sondern an den Projekteinstellungen / Kommandozeile.

zum Ersten:
Du musst für das Programm nicht unbedingt die DB MySQL installiert haben, sondern das Programm mit der MySQL-Lib kompilieren.
Zum Ausprobieren wäre dann die DB sinnvoll.

Gruß


----------



## yax (31. August 2011)

Heißt das ich muss die libmysql.lib Datei einbinden?


----------



## sheel (31. August 2011)

Genau. Je nach Compiler IDE ist das unterschiedlich, wie man es macht.


----------



## yax (31. August 2011)

Okay, das habe ich jetzt gemacht, jedoch ohne Erfolg


----------



## sheel (31. August 2011)

Welcher Compiler?


			
				Signatur hat gesagt.:
			
		

> "Funktioniert nicht" ist zu ungenau!...Fehlermeldungen, Verhalten des Programms, ...?


----------



## yax (31. August 2011)

Ich habe den gnu gcc compiler


----------



## sheel (31. August 2011)

...Und der Rest der Fragen?


----------



## yax (31. August 2011)

Es kann sein das ich die Fragen jetzt falsch verstehe, aber die fehlermeldungen sind immer noch dasselbe und das Programm lässt sich nicht starten.


----------



## sheel (31. August 2011)

Dann hast du nicht bzw. falsch gelinkt.
Wo hast du die Lib-Datei denn eingetragen?


----------



## yax (31. August 2011)

Also ich habe für das Programm ein neues Projekt gestartet. Dann habe ich unter Project->Build options...->Linker Settings->Add->... und dann habe ich mal alle Dateien aus dem Verzeichnis C:\Program Files\MySQL\MySQL Server 5.1\lib\opt die mit .lib enden hinzugefügt


----------



## yax (31. August 2011)

Hast du oder auch jemand anders )) vielleicht eine Idee, woran es liegen könnte, dass ich das Programm nicht übersetzt bekomme?


----------



## sheel (31. August 2011)

Es bleibt dabei: Falsch eingebunden.
Da ich Codeblocks aber bisher 0 Mal verwendet habe kann ich dir bei den IDE-Einstellungen auch nicht helfen.

Hast du schon mal probiert über die Kommandozeile kompilieren und linken?

PS: Nach guten 1.5 Stunden muss man auch noch nicht pushen anfangen.


----------



## yax (31. August 2011)

Okay, danke trotzdem


----------



## deepthroat (1. September 2011)

Hi.

Die Bibliotheken, die bei MySQL dabei sind, sind nicht für den MinGW GCC geeignet. Man muss erstmal kompatible Bibliotheken erzeugen oder man verwendet direkt die DLLs.

Siehe http://www.tutorials.de/c-c/373495-mysql.html#post1932301

Und nächstes Mal erstmal  das Thema gibt's x-mal...

Gruß


----------



## yax (1. September 2011)

Oh, danke für den Link   und ich habe echt keine Ahnung, warum ich da nicht dran gedacht habe die Suche zu benutzen -_- tut mir leid 

auf jeden Fall habe ich es jetzt geschafft, dass der compiler mir nichts mehr anzeigt. Wenn ich das Programm jetzt jedoch starte kommt da ein kleines Fenster: "Die Anwendung konnte nicht korrekt gestartet werden (0xc000007b). Klicken sie auf "OK", um die Anwendung zu schließen."

Was bedeutet das und wie bekomme ich das Programm jetzt zum laufen ?


----------



## ComFreek (1. September 2011)

Liegt die DLL im gleichen Verzeichnis wie dein Programm?
Es könnte sein, dass diese nämlich nicht gefunden werden kann.


----------



## yax (1. September 2011)

Jaaaaa    endlich hat es geklapt  danke an euch, dass ihr mir so geholfen habt  ich bin so froh


----------

