Возвращение указателя на неуправляемый класс из оболочки C ++ / CLI, которую можно импортировать в C # - PullRequest
1 голос
/ 04 марта 2012

У меня есть класс C ++, для которого мне нужно создать несколько экземпляров в приложении C #. Очевидно, это означает, что мне нужно будет создать оболочку C ++ / CLI, поскольку вы не можете импортировать классы C ++ в C #, но я никогда не использовал ее раньше. Класс C ++ наследуется от базового класса, который просто содержит несколько чисто виртуальных функций и не содержит данных. DLL экспортирует только одну функцию, которая создает новый экземпляр класса и возвращает указатель на базовый класс.

Какой тип C ++ / CLI можно использовать для вызова этой функции и получения указателя на класс C ++, но который также можно импортировать в C #?

Спасибо.

1 Ответ

1 голос
/ 04 марта 2012

Вам не нужен какой-либо специальный «тип C ++ / CLI», вы должны иметь возможность вызывать эту функцию, как из обычного C ++. Но если вы хотите использовать класс C ++ из C #, вам действительно нужно написать класс управляемой оболочки C ++ / CLI, который вы сможете использовать из C #.

Класс управляемой оболочки будет содержать поле с указателем на неуправляемый класс. Он также будет содержать те же члены, что и неуправляемый класс, которые пересылают их неуправляемые эквиваленты.

Пример того, как это сделать, см. Как: обернуть собственный класс для использования C # на MSDN .

...