Вопрос об оболочке c ++ / cli - PullRequest
2 голосов
/ 27 ноября 2010

Есть ли рекомендуемый способ обернуть нативную библиотеку c ++ с помощью c ++ cli?

1 Ответ

6 голосов
/ 27 ноября 2010

Не уверен, подходит ли один размер всем, но да, это в основном механический процесс.Ваша оболочка класса ref должна объявить закрытый член, который является указателем на ваш родной класс C ++.Создайте экземпляр в конструкторе.Вам понадобится деструктор и финализатор, чтобы снова удалить этот экземпляр.

Затем для каждой функции в собственном классе C ++ вы напишете управляемую версию.Это почти всегда один-к-одному вызов, вы просто вызываете соответствующий нативный метод и позволяете C ++ Interop преобразовывать аргументы.Иногда вам нужно написать немного связующего кода, чтобы преобразовать управляемый аргумент в его нативную версию, особенно если ваш нативный метод использует 8-битные символы char * или структурные аргументы.

Вы найдете этот стандартный шаблонв коде в мой ответ здесь .Я также должен упомянуть SWIG, инструмент, который может автоматизировать его.Не уверен, насколько он хорош, никогда не использовал его сам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...