У вас есть API с умеренным размером (40 с лишним) C, который нужно вызывать из проекта С#. Функции логически разбиваются, чтобы сформировать несколько классов, которые будут представлены API для остальной части проекта.
Есть ли какие-либо объективные причины, чтобы предпочесть P/Invoke или С++/CLI для интероперабельности под этим API, с точки зрения надежности, поддержки, развертывания,...?
Вопросы, которые я мог подумать, могут быть, но не являются проблематичными:
- Для С++/CLI потребуется отдельная сборка, классы P/Invoke могут находиться в основной сборке. (У нас уже есть несколько сборок, и в любом случае будут C-dll, поэтому это не главная проблема).
- Показатели производительности не кажутся различимыми между этими двумя методами.
Вопросы, о которых я не уверен, следующие:
- Мое ощущение, что С++/CLI будет легче отлаживать, если есть проблема между операциями, это правда?
- Знание языков достаточно, чтобы люди знали С# и С++, но знание деталей С++/CLI здесь реже.
Что-нибудь еще?