MySQL-Zugriff mit C++

Nighthawk

Linsenhofener Sämling
Registriert
16.12.06
Beiträge
2.558
Moin :)
Ich schreibe hier in C++ ein Programm, wofür ich auch eine Datenbank brauche. MySQL soll es sein. Nun stellt sich mir die Frage, wie ich darauf zugreifen kann. Ich habe einen Wrapper für die MySQL-C-API namens MySQL++ gefunden, allerdings scheint mir das Teil zum Ersten völlig chaotisch zu sein und zum Zweiten läuft es anscheinend nicht ohne Umwege unter Mac OS X.

Die Lösung müsste plattformunabhängig sein.
Hat jemand einen Vorschlag?

Gruß und Danke,
Nighthawk
 

tjp

Altgelds Küchenapfel
Registriert
07.07.04
Beiträge
4.057
Dann schreibe Dir Deinen eigenen Wrapper für die MySQL C Library, das geht ganz gut.
 

Der Paule

Königsapfel
Registriert
26.05.07
Beiträge
1.199
Hi,

sag mal, womit schreibst du unter Mac C++?
Ich mach das nur unter Windows, da ich noch keine passende IDE für Mac gefunden habe.

mfg
Paule
 

Nighthawk

Linsenhofener Sämling
Registriert
16.12.06
Beiträge
2.558
sag mal, womit schreibst du unter Mac C++?
Ich mach das nur unter Windows, da ich noch keine passende IDE für Mac gefunden habe.
TextEdit bzw. Xcode und g++ ;)

Ja, dann werde ich wohl nicht ums selbstschreiben rumkommen. Naja, dann lern ichs immerhin - danke :)
 

Der Paule

Königsapfel
Registriert
26.05.07
Beiträge
1.199
Super muss ich mir anschauen.
Ich schreib dir ne PM wenn ich noch fragen habe.

Danke.


Am besten beiden :D
 

Nighthawk

Linsenhofener Sämling
Registriert
16.12.06
Beiträge
2.558
Hm, ich probiere es gerade, auf dem Mac zu kompilieren:
database.cpp:26:19: error: mysql.h: No such file or directory

Ich habe ihm aber verklickert, dass die mysql.h in /Library/MySQL/include/mysql liegt, trotzdem bekomme ich den Fehler.

Hat jemand ne Idee?
 

tjp

Altgelds Küchenapfel
Registriert
07.07.04
Beiträge
4.057
Ohne genaueren Angaben was Du gemacht hast, wird's schwierig. Die richtigen Includes
Code:
#include <mysql.h>
// und nicht
#include "mysql.h"
verwendet?
 

tjp

Altgelds Küchenapfel
Registriert
07.07.04
Beiträge
4.057
Doch, nur bei mir hat das funktioniert. Du mußt schon genauer beschreiben was Du macht, damit man sehen kann, wo die Fehler bei Dir auftreten. Ohne Sourcecode den man begutachten kann, ist das reines Schauen in die Kristallkugel.

Verwendest Du Xcode?
Update: Ja, tust Du.
Ok, die von Dir verlinkte Beschreibung ist nicht ganz korrekt.
Du mußt unbedingt die Include und Linker Pfade für "All Configurations" auswählen, anderfalls baut Dir Xcode erstmal die Debug Version und wenn Du die Option wie auf den Screenshots nutzt werden da die Pfade nicht benutzt. -> Fehler.

Prüf das ganze nach.
 
Zuletzt bearbeitet:

Nighthawk

Linsenhofener Sämling
Registriert
16.12.06
Beiträge
2.558
Ich meld mich mal wieder ;)
Ich habe es dann doch noch geschafft... fragt mich nicht wie - auf jeden Fall meckert er nun nicht mehr, er könnte die mysql.h nicht finden.
Nun möchte ich ein mysql_init machen, kompilieren geht auch, aber beim Starten kriege ich Folgendes zu sehen:

[Session started at 2007-06-30 19:40:04 +0200.]
ZeroLink: unknown symbol '_mysql_init'

Weiß jemand, woran es liegen könnte?
 

MacApple

Schöner von Bath
Registriert
05.01.04
Beiträge
3.652
Der Linker findet anscheinend die MySQL C-Library nicht. Du musst bei den Linkeroptionen auch angeben, dass gegen die MySQL C-Library gelinkt werden soll.

MacApple
 

Nighthawk

Linsenhofener Sämling
Registriert
16.12.06
Beiträge
2.558
Der Linker findet anscheinend die MySQL C-Library nicht. Du musst bei den Linkeroptionen auch angeben, dass gegen die MySQL C-Library gelinkt werden soll.
Danke, aber die Pfadangaben müssten eigentlich stimmen o_O
Code:
g++ -I/Library/MySQL/include/mysql -L/Library/MySQL/lib/mysql main.cpp

Mach ich irgendwas falsch?
 

MacApple

Schöner von Bath
Registriert
05.01.04
Beiträge
3.652
Mit -L gibst Du nur das Verzeichnis an, wo der Linker nach Libraries suchen soll. Du musst auch angeben, wogegen er linken soll. Das machst Du mit der Option -l (kleines L).

MacApple
 

Nighthawk

Linsenhofener Sämling
Registriert
16.12.06
Beiträge
2.558
Mit -L gibst Du nur das Verzeichnis an, wo der Linker nach Libraries suchen soll. Du musst auch angeben, wogegen er linken soll. Das machst Du mit der Option -l (kleines L).
Danke! :)

Wäre es denn nun so richtig?

g++ main.cpp -I/Library/MySQL/include/mysql -L/Library/MySQL/lib/mysql -lmysqlclient

/usr/bin/ld: warning /Library/MySQL/lib/mysql/libmysqlclient.dylib cputype (18, architecture ppc) does not match cputype (7) for specified -arch flag: i386 (file not loaded)
/usr/bin/ld: Undefined symbols:
_mysql_close
_mysql_init
_mysql_real_connect
collect2: ld returned 1 exit status
 

MacApple

Schöner von Bath
Registriert
05.01.04
Beiträge
3.652
Ja, ist so nun richtig. Du hast jetzt nur noch das Problem, dass die mysqlclient Library für PPC compiliert ist, Du aber wohl einen Intel-Mac hast?

MacApple
 
  • Like
Reaktionen: Nighthawk

Nighthawk

Linsenhofener Sämling
Registriert
16.12.06
Beiträge
2.558
Ja, ist so nun richtig. Du hast jetzt nur noch das Problem, dass die mysqlclient Library für PPC compiliert ist, Du aber wohl einen Intel-Mac hast
Hmm... Na gut, mal sehen, ob ich das auf die Reihe krieg.

Auf jeden Fall vielen vielen Dank :)