Есть ли способ автоматически создавать оболочки p / invoke для .net из заголовка c?
Конечно, я мог бы создать их вручную, но поддерживать их было бы болезненно, и я, вероятно, где-то допустил бы ошибку, что привело бы к сложным для отладки сбоям.
Я пробовал SWIG, но он создал полные классы, где было бы достаточно простых структур. Другая проблема с SWIG заключается в том, что для него требуется дополнительный код взаимодействия на стороне c.
Я бы предпочел, чтобы выход работал и в моно, но это не обязательно.
Еще одна вещь, с которой я мог бы работать, - это программа, которая анализирует заголовок c и создает вывод в удобном промежуточном формате, таком как xml, из которого я могу сам создать оболочку C #.
Изменить:
PInvoke Interop Assistant - это то, что мне нужно.
Однако с ним есть некоторые небольшие проблемы:
* Он переводит "unsigned char *" в строку, где я Я бы предпочел IntPtr
* Предполагается, что size_t = int = long = 32bit. В настоящее время это верно для меня, но может не для всех платформ.
Есть ли чистый способ исправить это? В противном случае я немного воспользуюсь поиском и заменой в коде c перед его преобразованием.