2011-02-09 3 views

ответ

2

Вам не обязательно нужна обертка, многие библиотеки DLL с прямыми экспортированными функциями C могут быть выведены с помощью атрибута [DllImport]. Исключением для экспорта C было бы плохо спроектированная DLL, которая требует, чтобы клиентский код выпускал память, которая не может быть выполнена управляемым кодом, поскольку он не имеет доступа к распределителю.

В случае, когда у вас есть , есть, чтобы иметь оболочку, является родным классом C++. Управляемый код не может вывести его напрямую, поскольку он не знает, как создать экземпляр класса (который требует знания размера объекта и вызова конструктора), а также как его уничтожить (что требует вызова деструктора). Это довольно легко сделать в C++/CLI. Очень механически, проект SWIG может сделать это автоматически. Изучение этого инструмента, однако, скорее инвестиции, чем обучение написанию обертки.

+0

Не совсем понял. Вы говорите, что c-классы могут быть pinwoked, но C++ не может? Зачем? –

+1

Я конкретно обратился к этому в своем ответе, 2-й абзац. –

Смежные вопросы