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.

Respuestas a la pregunta(1)

Su respuesta a la pregunta