Создание C ++ Dll и вызов его из C # - PullRequest
3 голосов
/ 23 декабря 2009

В моем проекте у меня есть устройство, которое поставляется с примерами кодов C ++. Коды в порядке, и устройство работает как положено.

Но мне нужно поговорить с моим интерфейсом C #, потому что все другие устройства в настоящее время используют интерфейс C #.

Так что я планирую создать DLL Wrapper для драйвера. Я создам собственную библиотеку C ++ (из исходного кода с соответствующим интерфейсом) и вызову эту библиотеку C ++ из C # с помощью DLLImport (просто вызовите мои интерфейсы там).

Я почти уверен, что это можно сделать таким образом, но я никогда не создавал библиотеку C ++ и не использовал ее из C #. Итак, кто-нибудь может отослать меня к какому-нибудь уроку, связанному с моей проблемой?

Я использую C ++ / C # int VS.NET 2008.

С уважением, Максуд

Ответы [ 4 ]

3 голосов
/ 23 декабря 2009
2 голосов
/ 23 декабря 2009

Еще один полезный инструмент, которым вы располагаете, это C ++ CLI .

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

Неуправляемая часть может обращаться к неуправляемым DLL без использования функций PInvoke.

Ваш код C # может обращаться к управляемым классам в этой промежуточной библиотеке.

1 голос
/ 23 декабря 2009

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

0 голосов
/ 11 апреля 2014

Для всех, кто приходит к этому вопросу и ищет ответы, вы можете попробовать xInterop NGen ++, генератор оболочки C # для нативной C ++ DLL , который был только что выпущен для широкой публики, инструмент может генерировать оболочку C # для собственной библиотеки C ++ DLL автоматически и мгновенно, используя передовые технологии P / Invoke. Проверьте текущую версию, и скоро выйдет бесплатная версия.

(я автор инструмента)

...