Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Absturz am Programmende, nach Aufrufe von [mysql_connect]

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
10.05.2005, 08:52 Uhr
Manfred



Hallo Ich habe folgendes Problem:
in einer Windows-Anwendung möchte ich auf Daten aus einer Mysql-Datenbank zugreifen. Der folgende Quelltext (Er ist natürlich unvollständig, habe ihn nur schnell aus dem Kopf ge-
schrieben) funktioniert soweit einwandfrei, aber beim Beenden der Anwendung erhalte ich
eine System-Fehlermeldung. Mit dem Debugger habe ich festgestellt, daß mein Destruktor
noch abgearbeitet wird, aber sobald Windows die Kontrolle übernimmt kommt es zu einem Ab
sturz. Ich würde mich sehr freuen, wenn mir jemand von Ihnen einen brauchbaren Tip geben
könnte.

Mit freundlichen Grüßen
Manfred



C++:

#include "mysql.h"

// Es folgt die Declaration für  mysql_connect() sowie weitere Funktionen aus der libmysql.dll
typedef MYSQL * __stdcall (*MSQLCO)(MYSQL *, const char *, const char *, const char *);       //  MSQLCO
    //  ...
    //  ...


class  Anwendung : public TWindow
{
  public:
      Anwendung(TWindow* parent = 0);
      ~Anwendung();
      ...
      ...

  protected:
    void Aaaaa();
    DECLARE_RESPONSE_TABLE(TDruckschleife);
    MYSQL * mysql;
    MYSQL * rue;
}

DEFINE_RESPONSE_TABLE1(TDruckschleife, TWindow)
  EV_COMMAND(CM_aaaa,  Aaaaa),
END_RESPONSE_TABLE;

Anwendung::Anwendung(TWindow* parent)
  {
    Init(parent, 0, 0);
  }

void Anwendung::Aaaaa()
  {
    MSQLCO Msql_connect;
    // Hier stehen weitere Zeiger auf Funktionen

        HINSTANCE hi;
    FARPROC adr;


        hi = LoadLibrary("libmysql.dll");
        if(hi) { dc.TextOut(x1,y1,"TDL geladen",11); y1 += 16; }
        else   { dc.TextOut(x1,y1,"Fehler",6); y1 += 16;       }

        adr  = GetProcAddress(hi, "mysql_connect");
        Msql_connect = (MSQLCO)adr;

        rue = (Msql_connect)(mysql, "localhost", "root", "");
               // Hier folgen weitere Mysql-Funktionsaufrufe aus der
  }

Anwendung::~Anwendung()
  {

  }


int
OwlMain(int /*argc*/, char* /*argv*/ [])
{
  return TDrawApp().Run();
}


Dieser Post wurde am 10.05.2005 um 09:01 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
10.05.2005, 09:02 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


mach HINSTANCE als Klassenmember und geb die Dll im Destruktor wieder frei (FreeLibrary)

oder du gibst die DLL am Ende bevor du die Funktion Aaaaa verlässt wieder frei.

Ansonsten würde ich auch überprüfen ob er die Dll überhaupt laden konnte
--
class God : public ChuckNorris { };

Dieser Post wurde am 10.05.2005 um 09:02 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
11.05.2005, 08:53 Uhr
Manfred



Danke FloSoft,

FreeLibrary hat leider nichts gebracht. Irgendetwas muß bei der Ausführung von Mysql_connect auf dem Stack pasieren. Vieleicht gibts ja noch ein Tip.

Manfred
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
11.05.2005, 08:58 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


was genau ist den der Absturz? Access Violation? Hast du evtl vergessen deine Query-Daten mit mysql_free_result (oder so ähnlich) freizugeben?
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
13.05.2005, 21:33 Uhr
~Rob
Gast


Wäre statisches Linken nicht einfacher? Und laut Doku sollte mysql_real_connect verwendet werden.

Rob'
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
19.05.2005, 21:17 Uhr
Manfred



Statisches Linken funktioniert leider nicht. Mit der libmysql.def kommt mein Linker, es handelt sich um Borland c++ Vers. 4, nicht zurecht. Auch IMPLIB.EXE ist mit der DLL
überfordert. Rufe ich in meinem Programm mysql_real_connect auf, stürzt meine Anwendung gleich ab. ? ? ?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: