Подтвердить что ты не робот

Создание простой С++.NET wrapper. Шаг за шагом

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

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

S.O.S.

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

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