mySQL lib läuft nicht
-
Ich benutze die mySQL lib (mysql.h und die dll) als möglichkeit zu einem MYSQL server zu connecten.
Nun habe ich aber das Problem, dasich linker errors bekomm und ich weiss nicht wieso.
#include <mysql.h> #include <stdarg.h> #include <stdio.h> #include <stdlib.h>
Inlcude ich das, bekomme ich einen Typenfehler in der mysql_com.h
my_socket fd; <-
Debugger error :
[C++ Fehler] mysql_com.h(116): E2303 Typname erwartet
[C++ Fehler] mysql_com.h(116): E2139 In Deklaration fehlt ;
[C++ Fehler] mysql_com.h(180): E2451 Undefiniertes Symbol 'SOCKET'-------------
Ich verstehe nicht ganz, was da fehlt ?
Fehlt da noch eine Inlcude datei ?Wäre klasse, wenn jemand, der sich damit auskennt, da weiterhelfen kann.
danke
gruß mayer
-
Hallo
kann ich so nicht nachvollziehen (bei mir nicht)
stimmen alle Pfade fuer mySQL
MfG
Klaus
-
also ich habe den pfad zu den MYSQL headr dateien angegeben im Projekt, sonst würde er mir ja sagen, das er die DAtei nicht includen könnte.
Es kommen eben keine include FehlerHab nun eine neues Projekt angefangen :
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" #include <mysql.h> #include <stdio.h> TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { #define HOST "localhost" #define USER "mayer" #define PASSWD "user" #define DB_NAME "whq" #define PORT 3306 MYSQL *mysql = NULL; // Connection handler mysql = mysql_init(NULL); if(mysql != NULL) if(!mysql_real_connect(mysql,HOST, USER,PASSWD, DB_NAME, PORT, NULL, 0)) this->act_connection = mysql; else return false; return true; } //---------------------------------------------------------------------------
Debugger error :
[C++ Fehler] mysql_com.h(116): E2303 Typname erwartet
[C++ Fehler] mysql_com.h(116): E2139 In Deklaration fehlt ;
[C++ Fehler] mysql_com.h(180): E2451 Undefiniertes Symbol 'SOCKET'Kannst du das einfach mal bei dir testen ?
Ich verstehe es einfach nicht, irgendeine datei wird da nicht includet.
windows.h ? falsche reinfolge ?
In der readme steht genau das, aber es klappt nicht.wäre klasse, ich komme einfach nicht weiter
-
Hallo
du hast die winsock.h vergessen
(vor mysql.h)siehe "Suche"
MfG
Klaus
-
prima das hat geklappt, nun kommt aber ein Linker Fehler. Wo hätte ich das mit winsock finden sollen ?
komisch//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" #include <winsock.h> #include <mysql.h> #include <stdio.h> TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { #define HOST "localhost" #define USER "mayer" #define PASSWD "user" #define DB_NAME "whq" #define PORT 3306 MYSQL *mysql = NULL; // Connection handler mysql = mysql_init(NULL); if(mysql != NULL) if(!mysql_real_connect(mysql,HOST, USER,PASSWD, DB_NAME, PORT, NULL, 0)) // this->act_connection = mysql; return; else return; return; } //---------------------------------------------------------------------------
Deuger :
[Linker Fehler] Unresolved external 'mysql_init' referenced from C:\PROGRAMME\BORLAND\CBUILDER5\PROJECTS\UNIT1.OBJ
[Linker Fehler] Unresolved external 'mysql_real_connect' referenced from C:\PROGRAMME\BORLAND\CBUILDER5\PROJECTS\UNIT1.OBJIch versteh das nicht
Vielen Dank natürlich
-
Also ich hab das hier gefunden, weiss aber nicht ganz was es damit aufsich hat. Was meinen die damit, das ich MySQL neu komlieren muss ?
hier der link
http://dev.mysql.com/doc/mysql/en/Borland_C++.html
Kann jemand helfen ?
-
moin meister ...
ganz einfach, Du mußt die Lib neu kompilieren, weil Borland ein anderes Format als Microsoft für Libs verwendet ...
keine Ahnung, ob da nicht noch nen Borland Projekt oder nen Makefile dabei ist, welches verwendet werden kann.
MfG
RB
-
Hallo
@maYer
wo du das mit der winsock.h haettest finden sollenund auch dein anderes Problem wird sich loesen wenn du die Suche verwendest
MfG
Klaus
-
Ok hab mir jetzt die sachen im Forum durchgelesen, doch die kommen bei recompilieren nicht weiter, da dabei ein error kommt.
eine frage, wo bekomm ich implib her ?
Hab jede Menge gegoogled und nichts gefunden
wenn mir das einer schicken könnte : splivfATgmx.deDanke
-
implib.exe ist beim BCB dabei.
-
Also ich hab nun die libmysql.dll mit implib in eine .lib umgewandelt und zu projekt hinzugefügt.
Nun bringt er keinen Linker error mehr, doch er bringt einen Fehler ( popup) das er die libmysql.dll nicht findet. Wenn ich die libmysql.dll ( d.h. die org. von mysql) in mein Proojektverzeichniss kopiere, dann tritt der FEhler immer noch auf.
Muss ich da auch eine dll mit implib generieren, wenn ja, wie ?
Wie genau binde ich eine DLL ins Projekt ein ? einfach den Pfad zu DAteien unter Projekt/OPtionen/Verzeichnisse->Bibliothekspfad angeben ?DAnke
-
ok es hat geklappt, habs selber herausgefunden...danke
-
Moin, wär ganz gut wenn du schreiebn würdest, wie dus geschafft hast? *g* Danke...
MFG
Manu
-
Hi,
also als erstes machst du aus der originalen libmysql.dll mit implib.exe eine lib ( libmysql.libca 9KB groß).
Diese fügst du dann deinem Projekt hinzu ( Projekt->DEm Projekt hinzufügen ).
die alte libmysql.dll musst du dabei noch in das Prjektverzeichniss kopieren.Nun musst du noch bei den Projektoptionen den Bibliothekspfad zu dem msyql/include verzeichniss angeben(header files).
Fertig
hoffe das kann die weiterhelfen
-
Hallo,
hab zwar schon geoogelt, bei mysql.com alles ladbare runtergeladen, aber kann mir einer sagen wie die dll genau heist, und vor allem wo ich die Mysql.h herkriege
-
Hallo
wenn du mysql installiert hast befindet sich in dem Verzeichnis auch das Includeverzeichnis mit der mysql.h
MfG
Klaus
-
Ah danke!
Jetzt wird's besser
-
implib.exe ist im bin Ordner des BC++B.
einfach über Kommandozeile aufrufen:
implib.exe dest.lib source.dll
-
Kleiner Nachtrag:
Für das Umwandeln einer Lib liefert Borland das Programm coff2omf.exe (im bin-Verzeichnis) mit.
Rob'
-
also ich find die mysql.h nich! ich hab das jetz alles soo gemacht, wie ihr da beschrieben habt, aber ich hab halt die mysql.h nich und hab die von mysql++ genommen, was ich mir runtergeladen hab...aber wenn ich da alles mit eingebunden hab, dann bekomm ich am ende noch nen fehler:
[Linker Fehler] Unresolved external '_mysql_init' referenced from E:\LAUFERKDATEN\PROGRAMMIEREN\C_PLUS_PLUS\MYSQL\IMPLIB\UNIT1.OBJ [Linker Fehler] Unresolved external '_mysql_real_connect' referenced from E:\LAUFERKDATEN\PROGRAMMIEREN\C_PLUS_PLUS\MYSQL\IMPLIB\UNIT1.OBJ [Linker Fehler] Unresolved external '_mysql_close' referenced from E:\LAUFERKDATEN\PROGRAMMIEREN\C_PLUS_PLUS\MYSQL\IMPLIB\UNIT1.OBJ
wär ganz nett, wenn mir da jemand helfen könnte