Error de activación cuando se está formando una estructura con una cadena en ella
Tengo una estructura en C ++
struct UnmanagedStruct
{
char* s;
// Other members
};
y una estructura C #
struct ManagedStruct {
[MarshalAs(UnmanagedType.LPStr)]
string s;
// Other members
}
la biblioteca de C ++ expone
extern "C" UnmanagedStruct __declspec(dllexport) foo( char* input );
Y se importa como
[DllImport("SomeDLL.dll", CharSet = CharSet.Ansi)]
static extern ManagedStruct foo( string input );
Sin embargo cuando llamo a esta función obtengo
MarshalDirectiveException no fue manejado
La firma del tipo de método no es compatible con PInvoke.
La cosa es que esta llamada a la función funciona si elimino los caracteres * y la cadena s de las estructuras.