У меня есть структура 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.
Дело в том, что этот вызов функции работает, если я удаляю символы * и строку s из структур.