DLL's debuggen
-
Ich habe ein Programm welches mehrere DLL's per LoadLibrary zur Laufzeit einbindet. Ich habe meine DLL's in einem simplen Test Programm getestet und sie funktionieren. Nun möchte ich sie allerdings in der dafür vorgesehenen Anwendung nutzen und es wird bei der Ausführung einer der DLL Funktionen eine EInvalidPointer Exception geworfen
.
Ich übergebe an meine DLL einen Pointer auf ein existierendes TTable Objekt von meiner Anwendung.
Wenn ich allerdings (in der DLL) durch die Datensätze dieser Tabelle iteriere um mir daraus einen String zusammenzubauen passierts an folgender Stelle:while (!__table->Eof) { AnsiString Buffers = __table->FieldByName("BUFFER0")->AsString; Buffers += __table->FieldByName("BUFFER1")->AsString; Buffers += __table->FieldByName("BUFFER2")->AsString; Buffers += __table->FieldByName("BUFFER3")->AsString; // hier tritt der Fehler auf! Buffers += __table->FieldByName("BUFFER4")->AsString; Buffers += __table->FieldByName("BUFFER5")->AsString; Buffers += __table->FieldByName("BUFFER6")->AsString; Buffers += __table->FieldByName("BUFFER7")->AsString; // ... weiterer Code __table->Next(); }
Da ich die VCL und ebenfalls AnsiStrings verwende habe ich die MEMMGR.LIB und die BORLNDMM.DLL in mein DLL-Projekt sowie in das Projekt meiner Anwendung eingebunden. Scheint allerdings auch nicht viel zu nützen.
Hat irgendjemand eine Idee?
Außerdem würde ich gern die Bibliothek bei meiner Programmausführung debuggen,
wie kann man das machen.
-
Debuggen kann ich jetzt der Fehler ist allerdings immer noch da.
-
Hmm...
Wenn ich Dynamische RTL verwenden aktiviere kommt der Fehler nicht mehr.
Das dumme ist nur ich will keine dynamische RTL verwenden.
-
Du sollest nicht beide MM verwenden sondern nur einen davon,
denn aber dafuer im ganzen Projekt.Falls du Codeguardfehler â la 'Zugriff auf ungueltigen Speicherblock....200 Bytes' (BCB5) bekommst,
verwendest du nach wie vor in irgendeinen Teil deiner Anwendung (EXE, DLL, BPL usw.) verschiedene MM's.