我使用德爾福的.Net運行時間庫,並在我的項目中成功加載程序集(C#)。我只有在試圖從程序集中獲取字符串結果時纔有問題。 我的C#代碼是:德爾福的網絡運行時間庫
[DispId(0)]
public int Add(int a, int b)
{
return a + b;
}
[DispId(1)]
public string GetProtectedID(string InString)
{
return "12345";
}
我的德爾福代碼:
_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,第二一無所獲。
你確定正確版本程序集被加載? –
德爾福字符串和C#字符串類型不兼容。如果你打算寫一個兼容COM的DLL(可以在Delphi,VB中使用),你需要使用COM字符串類型,比如BSTR。 – whosrdaddy
你會想在Delphi端使用'WideString'。但使用Robert Giesecke的UnmanagedExports可能會更簡單。 –