Создание простой оболочки C ++. Net. Шаг за шагом - PullRequest
42 голосов
/ 14 апреля 2010

У меня есть проект на C ++. Я признаю, что я полный ноль в C ++. Но все же мне нужно написать оболочку c ++. Net, чтобы я мог работать с неуправляемой библиотекой c ++, используя ее. Итак, что я имею: 1) заголовочные файлы неуправляемого проекта. 2) библиотеки неуправляемого проекта (.dll и .lib) 3) пустой проект C ++. NET, который я планирую использовать в качестве оболочки для моего приложения на c #

Как я могу начать? Я даже не знаю, как установить ссылку на неуправляемую библиотеку.

S.O.S.

Ответы [ 2 ]

35 голосов
/ 14 апреля 2010

http://www.codeproject.com/KB/mcpp/quickcppcli.aspx#A8

Это общее направление. Вам необходимо создать проект библиотеки классов C ++ / CLI, добавить в него класс .NET (в этом примере StudentWrapper), создать экземпляр неуправляемого класса в качестве члена управляемого класса и обернуть каждую функцию неуправляемого класса. Неуправляемая библиотека добавляется в проект C ++ / CLI с использованием списка зависимостей компоновщика, а не в качестве ссылки. В Project - Properties - Linker откройте Дополнительные зависимости и добавьте туда имя .lib.

Примечание: поскольку речь идет об оболочке C ++ / CLI, никакой PInvoke! PInvoke используется для вызова экспортируемых функций (API), а не классов.

8 голосов
/ 14 апреля 2010

Вам нужно использовать p / invoke из .NET, чтобы общаться с вашей неуправляемой DLL.

По сути, вы создаете заголовок функции для каждой функции, которую вы хотите вызвать в неуправляемой DLL, и указываете .NET, в какой DLL эта функция находится, а затем просто вызываете эту функцию, как и любую другую в вашей оболочке .NET.

Вам даже не понадобятся знания C ++ - если вы знаете определение функций функций в вашей неуправляемой DLL и правильные типы данных.

...