Спасибо
Править
Эта библиотека является открытым исходным кодом..
таким образом, если для моих требований будет нужно что-то специальное в коде C++, то я смогу, делают это...
Вы не можете напрямую использовать классы C ++ в управляемом коде. Основные проблемы заключаются в невозможности использовать тот же распределитель памяти, который используется кодом C ++, и в невозможности легко вызвать конструктор и деструктор. Сотрудник Microsoft опубликовал сообщение в блоге , чтобы показать, что это не невозможно. Я бы не рекомендовал это делать.
COM - это решение, но оно всегда требует довольно большого переписывания и хороших навыков программирования на COM. Оболочка управляемого класса на языке C ++ / CLI обычно является лучшим решением. Вы можете взглянуть на инструмент SWIG , чтобы рассмотреть возможность автоматического создания этих классов-оболочек. Однако помните, что этот инструмент может легко создать больше проблем, чем решить.
Другой вариант - написать управляемую оболочку на C ++ / CLI. Я предпочитаю это вместо использования P / Invoke.
Есть два способа, оба с использованием адаптера (который сопоставляет классы C ++ с классами .NET):
Первый позволяет избежать работы через COM, и большая часть кода C ++ может быть в состоянии быть просто скомпилированным с правильными переключателями.
Дополнительно: Теоретически P / Invoke может быть возможен, но вся семантика C ++ будет потеряна, вам придется обрабатывать время жизни объекта C ++ вручную (и ссылки на экземпляры как IntPtr
). Плюс, конечно, вам нужно будет назвать искореженные имена ...