Я хочу использовать библиотеку С++ в проекте С#. Есть ли инструмент-оболочка для автоматического импорта всех классов?
Автооборачивать С++ dll в С#
Ответы (3)
SWIG может помочь создать оболочку, состоящую из двух частей, одной стороны C++, а другой стороны C#.
Однако нужно немного поработать, чтобы настроить правильные файлы генерации.
Альтернативой, которая требует больше ручного кодирования, является C++/CLI.
Для чистого c apis я предпочитаю p/invoke любому из них. Есть программа для автоматизации преобразования заголовков c. Если я правильно помню, это называется что-то вроде «P/Invoke Interop Assistant» или «Interop Signature Toolkit».
Существует также mono/cxxi, который выглядит довольно круто.
Процедура использования собственных .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» или обходчик зависимостей (depends.exe) для просмотра экспортированные символы. Оба они включены в Visual Studio.
Если это неуправляемый код, вы можете использовать P/Invoke. Другая возможность — использовать расширения C++/CLI для компиляции кода в управляемую сборку, которую можно использовать напрямую.
DllImport
.
- person Darin Dimitrov; 21.02.2011