Использование явного вызова Pinvoke в C++ (атрибут DllImport)

Обновлен: Ноябрь 2007

Платформа .NET Framework предоставляет функции вызова неуправляемого кода (или PInvoke) с помощью атрибута Dllimport, что позволяет управляемым приложениям вызывать неуправляемые функции, поставляемые в библиотеках DLL. Явный вызов PInvoke необходим в случаях, когда неуправляемые API-интерфейсы упаковываются как библиотеки DLL и исходный код недоступен. Например, вызов Pinvoke необходим для вызова функций Win32. В остальных случаях следует использовать неявный вызов P{Invoke. Дополнительные сведения см. в разделе Использование взаимодействия языка C++ (неявный PInvoke).

Вызов PInvoke выполняется с помощью атрибута DllImportAttribute. Этот атрибут принимает значение имени библиотеки DLL в качестве своего первого аргумента и помещается перед объявлением функции для каждой используемой в библиотеке DLL точки входа. Подпись функции должна соответствовать имени функции, экспортируемой из библиотеки DLL (однако часть преобразования типов можно выполнить неявно, объявив управляемые типы с помощью атрибута DllImport).

Это приведет к созданию управляемой точки входа для каждой собственной функции библиотеки DLL, содержащей необходимый код перехода (или преобразователь) и простые преобразования данных. Затем можно использовать эти точки входа для вызова управляемых функций из библиотеки DLL. Код, вставленный в модуль в результате вызова Pinvoke, является полностью управляемым, а явный вызов Pinvoke поддерживается для компиляции /clr, /clr:pure и /clr:safe. Дополнительные сведения см. в разделе Чистый и проверяемый код.

В этом подразделе

См. также

Основные понятия

Вызов неуправляемых функций из управляемого кода