Автоматическое завершение c ++ dll в c # - PullRequest
3 голосов
/ 21 февраля 2011

Я хочу использовать библиотеку c ++ в проекте ac #.Существует ли какой-либо инструмент-обертка для автоматического импорта всех классов?

Ответы [ 3 ]

9 голосов
/ 21 февраля 2011

SWIG может помочь создать обертку, состоящую из двух частей: одна сторона C ++ и одна сторона C #.Однако для настройки правильных файлов генерации нужно немного поработать.

Альтернативой, требующей более ручного кодирования, является C ++ / CLI.

Для чистого c apis я предпочитаю p / invoke над любымиз них.Есть программа для автоматизации конвертации заголовков c.Если я правильно помню, это называется что-то вроде «P / Invoke Interop Assistant» или «Interop Signature Toolkit».

Существует также mono / cxxi , который выглядит довольно круто.

2 голосов
/ 21 февраля 2011

Процедура использования собственных .dll в .Net называется P / Invoke. Посмотрите на http://pinvoke.net/ для некоторых примеров.

Обратите внимание, что вы должны сопоставить цель сборки с версией .dll. Таким образом, для x86 .dll вам нужно заблокировать ваш проект на x86, то же самое с x64.

Примечание2: вам нужно только заблокировать исполняемый проект (.EXE), но не любые дополнительные проекты, загруженные из .EXE. .Net автоматически сопоставит .Net .dll с целевым типом ЦП, если для них установлено ЛЮБОЕ.

С http://social.msdn.microsoft.com/forums/en-US/clr/thread/c957959e-0f0c-422e-a5be-4ccfdd12e63d: Вы можете использовать «dumpbin / exports» или обходчик зависимостей (зависимость.exe) для просмотра экспортированных символов. Они оба включены в Visual Studio.

0 голосов
/ 21 февраля 2011

Если это неуправляемый код, вы можете использовать P / Invoke .Другая возможность - использовать расширения C ++ / CLI для компиляции кода в управляемую сборку, которую вы можете использовать напрямую.

...