_TLB.pas 文件中的这个接口
// *********************************************************************//
// Interface: ITMyCOM
// Flags: (256) OleAutomation
// GUID: {D94769D0-F4AF-41E9-9111-4D8BC2F42D69}
// *********************************************************************//
ITMyCOM = interface(IUnknown)
['{D94769D0-F4AF-41E9-9111-4D8BC2F42D69}']
function MyDrawWS(a: Integer; b: Integer): WideString; stdcall;
end;
这着眼于操作系统 Windows
[
odl,
uuid(D94769D0-F4AF-41E9-9111-4D8BC2F42D69),
version(1.0),
helpstring("Interface for TMyCOM Object"),
oleautomation
]
interface ITMyCOM : IUnknown {
BSTR _stdcall MyDrawWS(
[in] long a,
[in] long b);
};
COM 服务器中的函数如下所示
function TTMyCOM.MyDrawWS(a, b: Integer): WideString;
begin
Result := WideString(IntToStr(a+b));
end;
在 COM 客户端中,我正在调用此函数,例如
Edit1.Text := String(MyCOM.MyDrawWS(1,1));
并在 $75A9FBAE获得错误第一次机会异常。异常类 EAccessViolation 带有消息“模块 'RPCRT4.dll' 中地址 75A409A4 的访问冲突”。读取地址 FFFFFFF8'。处理 Project1.exe (2296)
如果我想返回整数,它可以工作。如何返回宽字符串?