Я использую .Net Runtime Library для Delphi и загружаю сборку (C#) в моем проекте с успехом. У меня проблема только при попытке получить строковый результат сборки. Мой C# код:Net Runtime Library для Delphi
[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, второй ничего.
Вы уверены, что правильная версия сборка загружена? –
Строки строк Delphi и C# несовместимы. Если вы собираетесь написать COM-совместимую DLL (которая может быть использована в Delphi, VB, ...), вам нужно использовать типы строк COM, такие как BSTR. – whosrdaddy
Вы хотите использовать 'WideString' на стороне Delphi. Но проще было бы просто использовать UnmanagedExports Роберта Гиеске. –