Konsolen Aufruf bei Benutzung von Expat und Mysql im C Programm
-
Hallo,
ich schreibe gerade ein C- Programm, dass ein xml Dokument mit expat auslesen und dann auf eine MySQL Datenbak zugreifen soll.Bisher hatte ich nur Programme geschrieben, die nur auf die Datenbank zugreifen.
Das hat mit folgenden Konsolenaufruf auch funktioniert:`
gcc -c -I"C:\Programme\MySQL\MySQL Server 5.1\include" programm.c
gcc -o prog programm.o -L"C:\Programme\MySQL\MySQL Server 5.1\lib\opt
`
Mit Expat Befehlen im Programm erhalte ich allerdings immer folgende Fehlermeldung:
`
undefined reference to `XML_ParserCreate'
undefined reference to `XML_SetUserData'
`
u.s.w für jeden expat Befehl.
Was muss ich nun hinzufügen, damit auch die expat Befehle erkannt werden?Ich habe das auslesen mit expat auch allein getestet, allerdings ohne Konsolenaufruf, sondern direct in eclipse. Dazu habe ich einfach die Dateien aus dem Ordner
C:\Programme\Expat 2.0.1\Source\lib
importiert und es funktionierte Problemlos. Will ich es aber nun mit MySQL und über die Konsole, geht das nicht.Ich habe es schon mit -I"C:\ bla bla" und -L"C:\ bla bla" mit dem oben genannten Orner versucht, jedoch ohne erfolg.
Google und diverse Foren konnten mir bisher leider nicht helfen, aber vielleicht findet sich hier jemand
Danke
abby
-
Ich habe beim MySQL Konsolenaufruf das llibmysql vergessen. Sieht natürlich so aus:
`
gcc -c -I"C:\Programme\MySQL\MySQL Server 5.1\include" programm.c
gcc -o prog programm.o -L"C:\Programme\MySQL\MySQL Server 5.1\lib\opt -llibmysql
`
Aber so funktioniert halt expat nicht. Habe gerade noch ein wenig rumgespielt und diesen aufruf ausprobier:
`
gcc -c -I"C:\Programme\MySQL\MySQL Server 5.1\include" programm.c
gcc -o prog programm.o -L"C:\Programme\MySQL\MySQL Server 5.1\lib\opt" -llibmysql -L"C:\Programme\Expat2.0.1\Bin" -llibexpatw`
Alternativ auch beim letzten aufruf -llibexpat ohne w. Beides zeigt keine Fehlermeldungen an, aber wenn ich dann prog ausführen möchte, kommt die Fehlermeldung, das libexpat.dll nicht gefunden wurde, obwohl sie in folgendem Ordner ist:
C:\Programme\Expat 2.0.1\BinIch bin ratlos
-
Der Laufzeitlinker findet die Library nicht. Ich weiß nicht wie genau das unter Windows funktioniert. Aber im Zweifelsfall kopiere die Library einfach in den Ordner deines Programms oder in den Systemordner. Unter Windows ist das alles ein bisschen hässlich und verwirrend mit DLLs.
-
Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Rund um die Programmierung in das Forum Compiler- und IDE-Forum verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Ich habe nun die expat libary (die auch vorher schon drin war) und alles, was in den Ordnern
C:\Programme\MySQL\MySQL Server 5.1\include
und
C:\Programme\MySQL\MySQL Server 5.1\lib\opt
drin ist in den entsprechenden Projekt Ordner im eclispe workspace kopiert.
Wenn ich dann in eclipse auf "Run" gehe, hebt er folgenden Codeteil als Fehler hervor:MYSQL *conn; MYSQL_RES *res;
Den rest, also so was wie
conn = mysql_init(NULL); if (!mysql_real_connect(conn, server, user, password, database, 0, NULL, 0)) { fprintf(stderr, "%s\n", mysql_error(conn)); exit(0);} sprintf(sqlquery,"SELECT ID FROM tabelle"); if (mysql_query(conn, sqlquery)) { fprintf(stderr, "%s\n", mysql_error(conn)); exit(0); } res = mysql_store_result(conn);
erkennt er als mysql Befehle
Was kann ich noch machen, damit dies nun auch in eclipse läuft?
(wie schon gesagt: Nur Zugriff auf eine MySQL datenbank hat wunderbar mit dem Konsolenaufruf, aber vorher auch nie in eclipse geklappt. Expat funktioniert in eclipse, aber nicht mit Konsolenaufruf!Wie kann ich nun beides verbinden?)