¿Cómo llamar a esta función Delphi desde C#?
-
24-10-2019 - |
Pregunta
Tengo problemas para llamar a una función Delphi de C# (intentó leer o escribir memoria protegida), y me preguntaba cuál debería ser la forma correcta de llamar al método. La firma de la función Delphi es la siguiente:
procedure methodToCall(
aFirstParameter: Widestring;
var aSecondParameter: Widestring
); stdcall;
¿Cuál es la forma correcta de llamar a este método desde C#?
Solución
Widestring es compatible con Com BSTR y, por lo tanto, el .NET Marshaller debería poder consumirlo con bastante alegría:
[DllImport(@"test.dll")]
private static extern void methodToCall(
[MarshalAs(UnmanagedType.BStr)]
string aFirstParameter,
[MarshalAs(UnmanagedType.BStr)]
ref string aSecondParameter
);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow