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