从dll使用接口是否安全

mar*_*_ja 4 delphi dll memory-management

当我想在DLL中导出类时,从接口派生它并通过导出函数返回该接口是否正确?

//exported dll function, which is used in the exe.
function MyClass_Create: IMyClass;
begin
  result := TMyClass.Create;
end;
Run Code Online (Sandbox Code Playgroud)

内存管理怎么样?我可以传入/传出不同的接口和字符串而不用担心和崩溃吗?

IMyClass = interface
  procedure SetString(aMsg: string);
  function GetString: string;

  procedure SetClass(aClass: ITestClass);
  function GetClass: ITestClass;
end;
Run Code Online (Sandbox Code Playgroud)

klu*_*udg 5

接口引用与内存管理正交.通常导出一个从dll返回接口引用的函数,而不关心内存管理.使用引用计数接口,您可以确保实现接口的对象实例也将在dll中释放.

字符串是不同的.导出接口或导出平面函数无关紧要 - 适用相同的限制.

BTW您的问题标题不正确,Delphi中没有"界面实例".