Einzelnen Beitrag anzeigen

ele

Registriert seit: 18. Feb 2009
129 Beiträge
 
Delphi 2010 Professional
 
#3

Re: ShareMem bzw. FastMM mit DLL

  Alt 9. Mär 2010, 18:14
Ich habe zwei Funktionen die mein Plugin exportiert:

Delphi-Quellcode:
function GetInterfaceVersion(): AnsiString;
begin
  Result := rbInterfaceVersion;
end;

function RegisterWebApplication(ARaspberryServerAPI: IrbAPI): IrbWebApplication;
begin
  Result := TrbwDemoWebApp.Create(ARaspberryServerAPI);
end;
Also habe ich nach deinem Vorschlag AnsiString in WideString geändert:

Delphi-Quellcode:
function GetInterfaceVersion(): WideString;
begin
  Result := rbInterfaceVersion;
end;
Das scheint anfangs ganz gut zu funktionieren, aber beim Beenden des Programmes knallts dann doch.

Ich habe das Gefühl, das Interfaces alleine mich nicht retten, da die Interfaces Methoden deklarieren, die ihrerseits wieder Strings und Delphi-Objekte als Parameter haben. Dies könnte ein Hinweis sein:

Zitat:
{ Important note about DLL memory management: ShareMem must be the
first unit in your library's USES clause AND your project's (select
Project-View Source) USES clause if your DLL exports any procedures or
functions that pass strings as parameters or function results. This
applies to all strings passed to and from your DLL--even those that
are nested in records and classes.
ShareMem is the interface unit to
the BORLNDMM.DLL shared memory manager, which must be deployed along
with your DLL. To avoid using BORLNDMM.DLL, pass string information
using PChar or ShortString parameters. }
Ich weiss, dass es schwer nachzuvollziehen ist, wenn man keinen Code hat. Aber weil ich mein Mammut-Projekt schlecht in das Forum stellen kann, habe ich husch husch eine kleine Demo-Anwendung zusammengestellt, die im wesentlichen gleich funtioniert. Es wäre auch ein hübsches Beispiel wie man ein Plugin programmiert, wenn es dazu nicht schon genug Beiträge gäbe. (Wer ein funktionierendes Beispiel will muss halt FastMM4 durch ShareMem ersetzen und die borlndmm.dll ins Exe-Verzeichnis stellen).

Wenn jemand da reinblicken könnte, wäre ich sehr dankbar.
Angehängte Dateien
Dateityp: zip dllplugintest_122.zip (11,1 KB, 9x aufgerufen)
  Mit Zitat antworten Zitat