我知道,当我在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',并且已经有好几年了。 –