Я пытаюсь передать структуру из C # в библиотеку C ++. Я передаю структуру как объект, а функция C ++ ожидает ее как указатель (void *).
У меня проблемы с передачей структуры.
[DllImport("MockVadavLib.dll", CharSet = CharSet.Ansi)]
public static extern IntPtr TheFunction([MarshalAs(UnmanagedType.LPStruct)] UserRec userRec);
Вот текст исключения во время выполнения, который я получаю:
"Cannot marshal 'параметр # 1': недопустимая комбинация управляемого / неуправляемого типа (этот тип значения должен быть связан со Struct)."
Хотя я нашел статью MSDN, которая использует LPStruct именно в этом контексте.
Это моя структура, которую я пытаюсь упорядочить:
[StructLayout(LayoutKind.Sequential)]
public struct UserRec {
[MarshalAs(UnmanagedType.I4)]
public int userParam1;
}
Это функция C ++:
MOCKVADAVLIB_API tVDACQ_CallBackRec * TheFunction(void * userParams) {...