Come chiamare questa funzione Delphi da C #?
-
24-10-2019 - |
Domanda
sto avendo problemi di chiamare una funzione Delphi da C # (tentato di leggere o scrivere memoria protetta), e si chiedeva che cosa il modo corretto di chiamare il metodo dovrebbe essere. La firma funzione di Delphi è la seguente:
procedure methodToCall(
aFirstParameter: Widestring;
var aSecondParameter: Widestring
); stdcall;
Qual è il modo corretto di chiamare questo metodo da C #?
Soluzione
Il WideString è compatibile con COM BSTR e così il marshaller .net dovrebbe essere in grado di consumare tranquillamente:
[DllImport(@"test.dll")]
private static extern void methodToCall(
[MarshalAs(UnmanagedType.BStr)]
string aFirstParameter,
[MarshalAs(UnmanagedType.BStr)]
ref string aSecondParameter
);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow