我知道,當我在Delphi應用程序和Delphi DLL之間共享strings
時,我需要在應用程序和dll項目源中添加Sharemem
作爲使用子句中的第一個單元。德爾福的Sharemem - 當不需要時
但是,如果dll導出函數只接受Pchars
,但在使用strings
的某些dll方法中,我是否也應該使用sharemem?讓我示出的示例代碼:
procedure ShowMyCustomMessage(aMessage : Pchar);
var
vUselessString : string;
begin
vUselessString := aMessage;
ShowMessage(vUselessString);
end;
exports
ShowMyCustomMessage;
在這簡單的和無用的情況下,DLL是接受Pchar
但是導出的方法內的dll創建string
變種。我應該添加ShareMem
嗎?
WideString
怎麼辦?請問WideString
參數是否需要使用Sharemem
?
如果您想使用已棄用的borlndmm.dll內存管理器,將使用AFAIK'ShareMem'。但是自Delphi 2007以來這不是一個好主意。你應該更好地使用基於FastMM4的SimpleShareMem,並且*更快*。 –
@Arnaud你確定borlndmm被棄用嗎?我還沒有看到有人在談論它。 –
@RafaelColucci:* old * borlndmm.dll。令人困惑的是,所有內存管理器DLL都有這個名字。當前版本的Delphi/C++ Builder使用FastMM,編譯爲'borlndmm.dll',並且已經有好幾年了。 –