C WinAPI GNU GCC MYSQL CODE::BLOCKS
-
Da gibt es so ein Ding namens "Rechtschreibung". Solltest du beizeiten mal lernen. Macht es wesentlich leichter, deine Posts zu verstehen.
Odin1985 schrieb:
aber die datei liegt in dem verzeichnis
Jaja, aber in was für einem Verzeichnis? Einem include-Verzeichnis? Oder in irgendeinem Verzeichnis - beispielsweise die des Projektes, welches möglicherweise im Include-Path fehlt? Hast du das schon geprüft? Pfad im Kopf zusammengestellt und dann mal geschaut, ob der Compiler auch eine Chance hat, das Ding zu finden?
-
Genau und es gibt leute welche unter Legasthenie leiden darüber solltest du dir mal gedanken machen bevor du sowas in den raum wirfst. Eine nette aufforderung mehr darauf zu achten wie man was schreibt hätte es auch getan.
um aber mal wieder auf das thema zurück zu kommen, die datei liegt sowol als auch im include ordner im project ordner, ich habe die such pfarde des linkes und des compilers auf das include verzeichnis gelegt, zudem hab ich in den linker settings die datei in die bibilotheken hinzugefügt.
Sollte die datei an einer anderen stelle hinzugefügt werden müssen wäre es nett wenn mir jemand verraten könnte wo
-
Odin1985 schrieb:
Genau und es gibt leute welche unter Legasthenie leiden darüber solltest du dir mal gedanken machen bevor du sowas in den raum wirfst.
Ich glaube, das ist nicht der Fall. Bis ich Gegenteiliges bestätigt sehe, gehe ich davon aus, dass du einfach nur faul bist. Das hat in der Vergangenheit eine erstaunlich hohe Trefferquote erreicht.
Odin1985 schrieb:
Eine nette aufforderung mehr darauf zu achten wie man was schreibt hätte es auch getan.
Ich glaube eher, dass es dir auf den Zeiger geht, dass dich überhaupt jemand auf deine Fehler aufmerksam macht. Denn an der Aufforderung war nichts unfreundliches:
dachschaden schrieb:
Da gibt es so ein Ding namens "Rechtschreibung". Solltest du beizeiten mal lernen. Macht es wesentlich leichter, deine Posts zu verstehen.
Nur, wenn du so schlecht liest, wie du normalerweise schreibst, wundert mich nicht, dass du daraus irgendeine Unfreundlichkeit rausliest. Stattdessen solltest du dich einfach bemühen, sauberer zu schreiben.
Odin1985 schrieb:
um aber mal wieder auf das thema zurück zu kommen, die datei liegt sowol als auch im include ordner im project ordner
Ja dann zeigt doch mal die gegenwärtigen Pfadeinstellungen des Projektes, welches du versuchst zu kompilieren. Denn dein Problem ist ja, dass die Datei nicht gefunden wird, aber sie ist ja vorhanden. Also sucht der Compiler an der falschen Stelle. Also wäre es interessant zu sehen, wo er denn so sucht. Eventuell ist die Pfadangabe falsch oder so. Lässt sich leicht übersehen.
Starte die IDE auch mal neu. Besonders ranzige IDEs aktualisieren Projekteinstellungen nicht, lassen diese im Cache, und laden diese erst beim Laden des Projektes.
-
Ich glaube, das ist nicht der Fall. Bis ich Gegenteiliges bestätigt sehe, gehe ich davon aus, dass du einfach nur faul bist. Das hat in der Vergangenheit eine erstaunlich hohe Trefferquote erreicht.
Tja was du glaubst oder nicht ist wohl eher dein problem, es ist halt wie es ist, wenn du aber darüber diskutieren willst obe legasteniger nun legasteniker sind oder doch nur faul solltest du es einfach mal in einem anderen forum versuchen. anstelle leute blöd an zu machen.
confused: Ich glaube eher, dass es dir auf den Zeiger geht, dass dich überhaupt jemand auf deine Fehler aufmerksam macht. Denn an der Aufforderung war nichts unfreundliches:
okay damit geb ich dir zumindest recht ja es geht einem auf dem nerf genau so wie jemanden der mit einem feuermahl im gesicht leben muss und ständig seltsame blicke erntet oder darauf hin sprüche gedrückt bekommt. Nur das es micht vielleicht noch etwas mehr nerft da obwohl ich mich bemühe mal besser und mal schlechter klapt und der mit dem feuermahl nichts dagegen tun kann.
Nur, wenn du so schlecht liest, wie du normalerweise schreibst, wundert mich nicht, dass du daraus irgendeine Unfreundlichkeit rausliest. Stattdessen solltest du dich einfach bemühen, sauberer zu schreiben.
Kann durchaus sein das ich vielleicht etwas überreagiere manchmal bei dem thema oder es anders interpretiert habe also vielleicht manch anderer aber nett fand ich den spruch dennoch nicht. und um es noch einmal zu sagen ja ich muss öffters manche sachen lesen um den sin von texten zu erkennen.
Aber auch wenn du gerne weiter darüber diskutieren möchtest ob ich nun legasteniker bin oder so wie du denkst einfach nur flau bin. Würde ich dich darum bitten (auch anderen zu liebe die das vielleicht weniger interessiert) das wir das thema nun wieder in den focus nehmen welches hier in das forum gehört.
Ja dann zeigt doch mal die gegenwärtigen Pfadeinstellungen des Projektes, welches du versuchst zu kompilieren. Denn dein Problem ist ja, dass die Datei nicht gefunden wird, aber sie ist ja vorhanden. Also sucht der Compiler an der falschen Stelle. Also wäre es interessant zu sehen, wo er denn so sucht. Eventuell ist die Pfadangabe falsch oder so. Lässt sich leicht übersehen.
Welche pfard angaben willst du denn genau haben die die ich im linker und dem comiler hinzugefügt habe oder was anderes?
Linker Settings -> Linke Bibliotheken:
D:\Programme\MySQL\MySQL Connector C 6.1\lib\libmysql.lib
D:\Programme\MySQL\MySQL Connector C 6.1\lib\vs12\mysqlclient.lib
D:\Programme\MySQL\MySQL Connector C 6.1\include\mysql.h
D:\Programme\MySQL\MySQL Connector C 6.1\include\mysql\plugin_auth_common.h
Search directories -> Compiler:
D:\Programme\MySQL\MySQL Connector C 6.1\include
D:\Programme\MySQL\MySQL Connector C 6.1\lib
D:\Programme\MySQL\MySQL Connector C 6.1\include\mysql
Search directories -> Linker:
D:\Programme\MySQL\MySQL Connector C 6.1\include
D:\Programme\MySQL\MySQL Connector C 6.1\lib\vs12
D:\Programme\MySQL\MySQL Connector C 6.1\include\mysqlStarte die IDE auch mal neu. Besonders ranzige IDEs aktualisieren Projekteinstellungen nicht, lassen diese im Cache, und laden diese erst beim Laden des Projektes.
Ranzige IDEs???? Hab ich grade gemacht ändert nichts
Die datei plugin_auth_common.h wird von der datei client_plugin.h aufgerufen welche wiederrum von der ja von mir eingebundenen datei mysql.h aufgerufen
-
Linker Settings -> Linke Bibliotheken: D:\Programme\MySQL\MySQL Connector C 6.1\lib\libmysql.lib D:\Programme\MySQL\MySQL Connector C 6.1\lib\vs12\mysqlclient.lib D:\Programme\MySQL\MySQL Connector C 6.1\include\mysql.h D:\Programme\MySQL\MySQL Connector C 6.1\include\mysql\plugin_auth_common.h
Header-Dateien haben nichts in den Linker-Einstellungen verloren, da gehören in der Regel nur LIB-Dateien rein. Und wenn Code::Blocks so arbeitet wie der GCC, dann packt man in die Linkereinstellungen nur die Dateinamen rein und nicht den kompletten Pfad.
Search directories -> Linker: D:\Programme\MySQL\MySQL Connector C 6.1\lib D:\Programme\MySQL\MySQL Connector C 6.1\lib\vs12 Linker Settings -> Linke Bibliotheken: libmysql.lib mysqlclient.lib
Die IDE sucht dann in den Verzeichnissen nach den Dateien.
--------------------------------------
Ich habe mir die aktuelle Version des Connectors runtergeladen und wo separat reingepackt, dann ein neues Projekt erstellt (Visual Studio 2015) und in den Projekteinstellungen folgende Dateien hinzugefügt:
- VC++-Verzeichnisse->Includeverzeichnisse: "C:\mein_mysql_pfad\include\"
- Linker->Eingabe->Zusätzliche Abhängigkeiten: "C:\mein_mysql_pfad\lib\libmysql.lib"(Weil Visual Studio nicht wie der GCC arbeitet, muss man hier die LIB-Pfade absolut angeben).
Dann habe ich dieses kleine Beispiel kompiliert:
#include <mysql.h> #include <stdio.h> int main(void) { printf("MySQL client version: %s\n",mysql_get_client_info()); getc(stdin); return 0; }
Funzt ohne Murren.
-
Header-Dateien haben nichts in den Linker-Einstellungen verloren, da gehören in der Regel nur LIB-Dateien rein. Und wenn Code::Blocks so arbeitet wie der GCC, dann packt man in die Linkereinstellungen nur die Dateinamen rein und nicht den kompletten Pfad.
hm okay hab grade spasseshalber mal die header aus den linker einstellungen raus genommen dann kommt er nicht ein mal mehr mit mysql_init klar. was er vorher akzepiert hat.
Wenn ich in Code::Blocks (Welceher bei mir mit dem GNU GCC Compiler arbeitet) auf Linker einstellungen gehe und da dan auf Linke Bibliothek hinzufügen klicke, kommt ein datei auswahl fenster und wenn ich da was auswähle nimmt er automatisch den ganzen pfad daran kann man so wie ich das sehe nichts ändern.
Search directories -> Linker: D:\Programme\MySQL\MySQL Connector C 6.1\lib D:\Programme\MySQL\MySQL Connector C 6.1\lib\vs12 Linker Settings -> Linke Bibliotheken: libmysql.lib mysqlclient.lib
Die IDE sucht dann in den Verzeichnissen nach den Dateien.
--------------------------------------
Ich habe mir die aktuelle Version des Connectors runtergeladen und wo separat reingepackt, dann ein neues Projekt erstellt (Visual Studio 2015) und in den Prsojekteinstellungen folgende Dateien hinzugefügt:
- VC++-Verzeichnisse->Includeverzeichnisse: "C:\mein_mysql_pfad\include\"
- Linker->Eingabe->Zusätzliche Abhängigkeiten: "C:\mein_mysql_pfad\lib\libmysql.lib"(Weil Visual Studio nicht wie der GCC arbeitet, muss man hier die LIB-Pfade absolut angeben).
Dann habe ich dieses kleine Beispiel kompiliert:
#include <mysql.h> #include <stdio.h> int main(void) { printf("MySQL client version: %s\n",mysql_get_client_info()); getc(stdin); return 0; }
Funzt ohne Murren.[/quote]
VC++ hab ich auch schon drüber nach gedacht aber irgendwie hat es bei der installation mir die ganze c platte voll gehauen obwohl ich es auf d installieren lassen habe also hab ich es wieder runter geworfen und mich für code::blocks entschieden.
Nur noch mal zusammengefast:
Hab versucht die Linker Bibliotheken ohne pfad an zu geben (ja hab es doch hin bekommen) doch dann findet er sie nicht mehr (der braucht wohl doch den ganzen pfad) zudem hab ich die header raus geworfen was mir aber jetzt einen anderen fehler verursacht. (undefined reference to mysql_init)
Habe in den Such verzeichnisen des Compilers, Linkers und des Projektes die verzeichnise include, lib, vs12, mysql hinzugefügtIn VC++ sollte es ja auch zudem keine probs geben da irgend eine datei ja in c++ geschreiben worden ist, was natürlich für einen c compieler | linker (weis nicht mehr welchen es betrifft) schwer verständlich macht. (Hab ich nur gelesen ka ob es so ist)
Gibts nicht irgendwo eine Englische oder besser noch eine Deutsche anleitung wie man MySql auf einem Windows System in GCC einbinden kann.
-
Odin1985 schrieb:
hm okay hab grade spasseshalber mal die header aus den linker einstellungen raus genommen dann kommt er nicht ein mal mehr mit mysql_init klar. was er vorher akzepiert hat.
Du weißt aber schon, was eine Header-Datei ist? Das sind die Dinger mit der H-Endung. Nicht die mit der LIB-Endung.
Odin1985 schrieb:
Wenn ich in Code::Blocks (Welceher bei mir mit dem GNU GCC Compiler arbeitet) auf Linker einstellungen gehe und da dan auf Linke Bibliothek hinzufügen klicke, kommt ein datei auswahl fenster und wenn ich da was auswähle nimmt er automatisch den ganzen pfad daran kann man so wie ich das sehe nichts ändern.
Gibts nicht irgendwo eine Englische oder besser noch eine Deutsche anleitung wie man MySql auf einem Windows System in GCC einbinden kann.
Klick. Anscheinend wandelt der Linker bei der Suche in Verzeichnissen den Namen der Lib vorher in ein bestimmtes Schema um, das habe ich auf Windows komplett ausgeblendet. Mein Fehler. Vollständige Pfadangabe bei solchen LIB-Dateien (die also nicht nach
libxxx.a
aufgebaut sind) ist also notwendig.Da machen die auch genau das, was ich oben schon beschrieben habe:
-
Tell the compiler where to look for the header file(s) for the library.
-
Tell the linker where to look for the library file(s) for the library.
-
-
Du weißt aber schon, was eine Header-Datei ist? Das sind die Dinger mit der H-Endung. Nicht die mit der LIB-Endung.
Ach verdammt jetzt weis ich was der fehler war... nein spass bei seite jap klar weiß ich das.
-
Aaaaaaaaaaaaalso ... ich habe mir jetzt die Mühe gemacht und Code::Blocks konfiguriert.
Unter Search Directories->Compiler den Include-Path eingetragen:
C:\mysql_path\include
Unter Linker settings->Link libraries die beiden LIB-Dateien eingetragen:
C:\mysql_path\lib\libmysql.lib C:\mysql_path\lib\vs12\mysqlclient.lib
Und versucht, das Programm zu kompilieren. Ging. Aber
mysql_init
wird ja nicht erkannt bei dir. Also wollte ich mal nachschauen, wie die Funktion denn so deklariert ist (wegen Minimalbeispiel und so). Stellt sich raus, die Funktion kennt cscope nicht. Also will ich mal nachschauen, obmysql_get_client_info
bekannt ist, mit der Funktion hat er ja erfolgreich kompilert. Kennt cscope auch nicht. Dann will ich überhaupt malmysql.h
öffnen. Kennt cscope nicht.Ich erinnere mich an meine eigenen Worte, starte die IDE neu. Und plötzlich findet er die Symbole. Toll.
Egal. Ich baue mir ein kleines Beispiel, welches
mysql_init
verwendet, kompiliere - und es läuft. Mit den beiden Libs, die ich oben angegeben habe und die du auch bei dir stehen hast.Jetzt ist die Frage: warum findet er das Symbol nicht.
Mögliche Erklärungen:
1. Dateien sind irgendwie überschrieben worden. Sollte nicht sein, kann aber. Ist relativ leicht zu prüfen.
2. Falsche Architektur, du willst für x86 bauen, hast aber für x64 die Binaries runtergeladen.
3. Falsches Verzeichnis, "D:\Programme\MySQL\MySQL Connector C 6.1\lib\" gibt es nicht, oder die Libs befinden sich nicht darin.
4. IDE ist eine Ranz-IDE und muss neugestartet werden.Ansonsten bin ich ein bisschen ratlos, weil ich das alles so gar nicht bei mir nachvollziehen kann.
-
sehr seltsam wenn das nit bald klapt werd ich es doch mal unter linux versuchen
-
Odin1985 schrieb:
libmysql.dll nicht vorhanden sofrtware kann nicht gestartet werden.
... du weißt schon, dass der Linker die
libmysql.lib
braucht, aber die fertig übersetzte und gelinkte Anwendung dielibmysql.dll
? Wenn die IDE die Anwendung erstellen konnte, brauchst du nur noch einen Link auf die DLL im Verzeichnis mit der Anwendung zu setzen oder die DLL in das Verzeichnis mit der Anwendung verschieben oder umgekehrt, und dann sollte die Anwendung ohne Probleme starten.
-
So also und was war daran jetzt so schwer
es hat ohne murren geklapt... danke dir für deine hilfe und entschuldige bitte die umstände und meine lange leitung