Поделиться через


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

Платформа .NET Framework предоставляет явные функции вызова платформы (или PInvoke) с Dllimport атрибутом, чтобы разрешить управляемым приложениям вызывать неуправляемые функции, упакованные в библиотеки DLL. Явный PInvoke необходим для ситуаций, когда неуправляемые API упаковываются в виде БИБЛИОТЕК DLL и исходный код недоступен. Вызов функций Win32, например, требует PInvoke. В противном случае используйте неявный P{Invoke; дополнительные сведения см. в разделе "Использование взаимодействия C++" (неявное PInvoke).

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

Результатом является управляемая точка входа для каждой собственной функции DLL, содержащей необходимый код перехода (или thunk) и простые преобразования данных. Затем управляемые функции могут вызывать библиотеку DLL через эти точки входа. Код, вставленный в модуль в результате PInvoke, полностью управляется.

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

См. также

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