Перечисление UnmanagedType
дает довольно полный список целевых типов, которые вы хотите.Он охватывает все основные типы, доступные в C по крайней мере.Для пользовательских типов в C вам нужно проверить, являются ли они определениями типов стандартного типа, или, в случае структур, вам нужно переписать структуру в C # и упорядочить каждое ее поле вручную.
Классы C ++ (такие как MFC) здесь не рассматриваются.P / Invoke не поддерживает __thiscall
соглашение о вызовах (т. Е. Методы класса).Распространенные сценарии импорта кода C ++ в C # состоят в том, чтобы написать оболочку COM для класса с использованием C ++ / CLI или написать оболочку на основе C из C ++ (пометить код extern "C"), а затем использовать P / Invoke для оболочки.