我使用.Net Runtime Library for Delphi并在我的项目中成功加载程序集(C#)。我只有在尝试从汇编中获取字符串结果时才有问题。 我的C#代码是:
[DispId(0)]
public int Add(int a, int b)
{
return a + b;
}
[DispId(1)]
public string GetProtectedID(string InString)
{
return "12345";
}
我的Delphi代码是:
_SISign = dispinterface
['{AAFE8566-37E1-485B-9727-7223F7731F19}']
function Add(a, b : Integer) : Integer; dispid 0;
function GetProtectedID(InString: String): String; dispid 1;
end;
var
oSISign : _SISign;
begin
WriteLn(oSISign.Add(10, 20));
WriteLn(oSISign.GetProtectedID('SomeText'));
end;
第一行返回30,第二行没有。
答案 0 :(得分:-2)
我现在找到了一些解决方案
在C#中改变
public integer GetProtectedID(string InString, out string OutString)
{
OutString = "Result HERE";
return 0;
}
在Delphi中,我改为
_SIXmlSign = dispinterface
['{4a674fd3-244f-4802-9b1d-9eb0b0efb282}']
function GetProtectedID(InString: String; var OutString: String): Integer; dispid 1;
end;
现在代码工作