PInvoke ошибка при маршалинге структуры со строкой в ней

У меня есть структура C ++

struct UnmanagedStruct
{
   char* s;
   // Other members
};

и структура C #

struct ManagedStruct {
   [MarshalAs(UnmanagedType.LPStr)]
   string s;
   // Other members
}

библиотека C ++ разоблачает

extern "C" UnmanagedStruct __declspec(dllexport) foo( char* input );

И это импортируется как

  [DllImport("SomeDLL.dll", CharSet = CharSet.Ansi)]
  static extern ManagedStruct foo( string input );

Однако когда я вызываю эту функцию, я получаю

MarshalDirectiveException не было обработано

Подпись типа метода не совместима с PInvoke.

Дело в том, что этот вызов функции работает, если я удаляю char * s и строку s из структур.

Ответы на вопрос(1)

Ваш ответ на вопрос