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#?

¿Fue útil?

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
scroll top