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


  • Mod

    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 Fehler

    Hab 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


  • Mod

    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.OBJ

    Ich 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


  • Mod

    Hallo

    @maYer
    wo du das mit der winsock.h haettest finden sollen

    da zB ->
    http://www.c-plusplus.net/forum/viewtopic.php?t=42422&start=0&postdays=0&postorder=asc&highlight=mysql+winsock

    und 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.de

    Danke



  • 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


  • Mod

    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


Anmelden zum Antworten