Einzelnen Beitrag anzeigen

schwa226

Registriert seit: 4. Apr 2008
400 Beiträge
 
#1

DLL laden bringt einen FastMM Fehler (siehe Post #7!)

  Alt 11. Okt 2008, 21:11
Hi,

Ich habe ein kleines Problem hier:

In einer DLL gibt es diese Funktion:
Code:
procedure Soft_name (data:pchar; size:integer); stdcall ;export;
begin
  StrLCopy(data, SoftName, size);
end;
Diese DLL binde ich nun so ein:
Code:
TPluginName = procedure (data:pchar; size:integer); stdcall;

  FarProcName: TPluginName;
In meiner Funktion lade ich nun die DLL und suche mir die Funktion.
Code:
var
data : PChar;
begin

  sDLLPath := ExtractFilePath(Application.ExeName) + 'SoftPlug.dll';
  hDLL := LoadLibrary(pChar(sDLLPath));
  if hDLL = 0 then begin
    ShowMessage('DLL konnte nicht geladen werden.');
    Exit;
  end;

  try
    FarProcName := GetProcAddress(hDLL, 'Soft_name');
    if Assigned(FarProcName) then
      FarProcName(data,10);
  except
    ShowMessage('Funktion name der DLL konnte nicht ausgeführt werden.');
  end;
Doch wenn ich durchlaufe scheint es ein Problem mit StrLCopy SoftName->data zu geben.

Wenn ich beim Debuggen in der DLL den Wert von data ändere (mit dem Debugger-Inspector) kann der SoftName auf data kopiert werden. Dann kommt zumindest keine Fehlermeldung in der EXE. Die Variable data ist jedoch trotzdem leer!?

Hab es einmal mit static laden der DLL versucht. Da kommt kein Fehler und ich bekomme einen Wert von der DLL zurück.

Woran kann das liegen?
  Mit Zitat antworten Zitat