Einzelnen Beitrag anzeigen

Sliver

Registriert seit: 27. Jul 2004
18 Beiträge
 
#1

Speicherverltzung beim Laden einer DLL

  Alt 21. Sep 2005, 17:08
hi zusammen

Ich habe das folgende Problem. Ich erstell mit C++ eine DLL. Die Test-Header Datei der DLL sieht so aus.
Delphi-Quellcode:
#ifdef DESCREATOR_EXPORTS
#define DESCREATOR_API extern "C" __declspec(dllexport)
#else
#define DESCREATOR_API extern "C" __declspec(dllimport)
#endif

DESCREATOR_API int fnDescreator(int);
Jetzt binde ich die DLL dynamisch (gleicher Fehler bei statischer Einbindung) so ein.
Delphi-Quellcode:
type
  TFunc1=function(i:Integer):Integer;stdcall;
//...

procedure TFrmDynDLLCall.btnFunc1Click(Sender: TObject);
var
  handle:THandle;
  f:TFunc1;
begin
  handle:=LoadLibrary('descreator.dll');
  if handle<>0 then begin
    btnFunc1.Caption:='Func1(3)';
    f:=GetProcAddress(handle,'fnDescreator');
    lblFunc1.Caption:=IntToStr(f(3));
    FreeLibrary(handle);
  end
  else
    ShowMessage('LoadLibrary error');
end;
Wenn ich jetzt die Funktion f(3) aufrufen möchte, kommt eine Speicherverletzung, das er diesen und jenen Speicherblock nicht lesen kann.
Sieht jemand von euch den Fehler?

cu Sliver
  Mit Zitat antworten Zitat