Delphi的Net Runtime Library

时间:2016-11-16 08:02:29

标签: c# delphi

我使用.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,第二行没有。

1 个答案:

答案 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;

现在代码工作