Нужно ли создавать DLL-оболочку C ++ / CLI для неуправляемой DLL-библиотеки C ++? - PullRequest
3 голосов
/ 15 ноября 2011

Мне предоставлена ​​неуправляемая DLL-библиотека C ++, содержащая несколько классов.

Мне нужно иметь возможность использовать некоторые из этих классов в C #. Судя по моим исследованиям, мне кажется, что мне нужно создать DLL-оболочку C ++ / CLI, которая бы выполняла преобразование между управляемым и неуправляемым типами. Я видел несколько примеров, когда кто-то в основном создавал бы версию C ++ / CLI для каждого класса, и он содержал бы экземпляр неуправляемого типа C ++. Каков наилучший способ реализовать то, что я пытаюсь сделать здесь? Возможно, в неуправляемой DLL предусмотрено 10-15 классов. Прямо сейчас мне нужно использовать только некоторые из них, но, возможно, потребуется использовать больше в будущем. Спасибо!

1 Ответ

5 голосов
/ 15 ноября 2011

Да, вам нужно создать оболочку C ++ / CLI для этой библиотеки и использовать неуправляемые классы внутри этой оболочки. Для неуправляемой библиотеки, которая предоставляет API в стиле C, есть также опция PInvoke, но она не работает для классов C ++.

Вы также можете подумать о создании оболочки COM, если вы хотите использовать эту библиотеку как в собственных клиентах COM, так и в .NET. Но я думаю, что создание оболочки C ++ / CLI - более простая задача.

...