Вам понадобится
- - ПК c Visual Studio 2008/2010;
- - интернет.
Инструкция
1
Если у вас есть динамическая библиотека *.dll, написанная на неуправляемом коде, например, на языке C или C++, а также её заголовочные (header) файлы, и вам нужно объявить в вашем проекте целую кучу конструкций из библиотеки, то очень хорошим решением для вас может стать инструмент PInvoker. PInvoker свободно распространяется в виде расширения для IDE Visual Studio (поддерживаются версии 2005, 2008 и 2010), а также в виде отдельного приложения.
Работа с ним проста и удобна. PInvoker импортирует PInvoke определения для управляемого кода на C# или VB.NET из файлов заголовков C/C++ и связанной с ними библиотеки DLL. Вам останется лишь выбирать из списка доступных функций, структур, перечислений, констант, делегатов и проч. необходимые и импортировать в ваш проект.
Для начала нужно скачать и установить PInvoker. Скачайте с официального сайта установщик PInvoker.msi или расширение PInvokerAddin.msi для Visual Studio. Думаю, с этим проблем возникнуть не должно. Просто запустите нужный файл и следуйте инструкциям.
Работа с ним проста и удобна. PInvoker импортирует PInvoke определения для управляемого кода на C# или VB.NET из файлов заголовков C/C++ и связанной с ними библиотеки DLL. Вам останется лишь выбирать из списка доступных функций, структур, перечислений, констант, делегатов и проч. необходимые и импортировать в ваш проект.
Для начала нужно скачать и установить PInvoker. Скачайте с официального сайта установщик PInvoker.msi или расширение PInvokerAddin.msi для Visual Studio. Думаю, с этим проблем возникнуть не должно. Просто запустите нужный файл и следуйте инструкциям.
2
Рассмотрим на примере, как работать с этим полезным инструментом. Запустите Visual Studio, создайте новый проект. В меню Сервис -> Инструменты появился новый пункт: PInvoker. Нажмите на него, и откроется окно настроек PInvoker Addin. Выберите язык вашего проекта Language: C# или VB.NET. В выпадающем списке Profiles выберите edit profiles.
3
Откроется окно управления профилями. Выберите Create a new import profile и нажмите Next.
4
Теперь нужно добавить заголовочные header-файлы. Можете перетащить их мышью на окно PInvoker Profiles Wizard. Далее укажите директорию, где хранятся эти файлы.
5
На следующем шаге необходимо указать саму динамическую библиотеку. Её тоже можете смело тащить мышью на окно мастера профилей PInvoker.
6
После нажатия на кнопку Finish начнётся процесс импорта определений из выбранной динамической библиотеки. Об успешном завершении операции будет свидетельствовать надпись Import successful и появившийся в левом поле список названий функций из DLL.
7
Теперь вы можете с лёгкостью импортировать PInvoke определения в свой проект. В левом поле (1), в поле Type выберите тип: функция, процедура, структура, перечисление, константа, делегат и т.д. В поле Name выберите название нужной конструкции. По одинарному клику её описание появится в центральном поле окна PInvoker (2). По двойному – откроется её определение в хедер-файле. Нажав кнопку Insert definition (3), вы вставите определение в свой проект C#/VB.NET. Теперь вы можете пользоваться импортированной функцией динамической библиотеки в своём проекте.
Обратите внимание
Как и любой инструмент, PInvoker не является панацеей. Он тоже может ошибаться. Например, некоторым импортируемым типам могут быть присвоены типы .NET, не корректно совместимые с типами неуправляемого кода. За этим нужно следить и не поступать бездумно. Хотя надо признать, что PInvoker в 90% случаях импорт производит верно. Для остальных 10% разработчики предусмотрели кнопку Options.
Полезный совет
Если обработка определений завершилась с ошибкой, то проверьте, что вы правильно указали директорию расположения заголовочных файлов и прогоните мастер ещё раз.
Источники:
- Скачать PInvoker