다음을 통해 공유


C++에서 명시적 PInvoke 사용(DllImport 특성)

.NET Framework는 관리되는 애플리케이션이 DLL 내에 패키지된 관리되지 않는 함수를 호출할 수 있도록 특성과 함께 Dllimport 명시적 플랫폼 호출(또는 PInvoke) 기능을 제공합니다. 관리되지 않는 API가 DLL로 패키지되고 소스 코드를 사용할 수 없는 경우 명시적 PInvoke가 필요합니다. 예를 들어 Win32 함수를 호출하려면 PInvoke가 필요합니다. 그렇지 않으면 암시적 P{Invoke를 사용합니다. 자세한 내용은 C++ Interop(암시적 PInvoke) 사용을 참조하세요.

PInvoke는 .를 사용하여 DllImportAttribute작동합니다. DLL의 이름을 첫 번째 인수로 사용하는 이 특성은 사용될 각 DLL 진입점에 대한 함수 선언 앞에 배치됩니다. 함수의 서명은 DLL에서 내보낸 함수의 이름과 일치해야 하지만 일부 형식 변환은 관리되는 형식 측면에서 선언을 정의하여 DllImport 암시적으로 수행할 수 있습니다.

결과는 필요한 전환 코드(또는 thunk) 및 간단한 데이터 변환을 포함하는 각 네이티브 DLL 함수에 대한 관리되는 진입점입니다. 그런 다음 관리되는 함수는 이러한 진입점을 통해 DLL을 호출할 수 있습니다. PInvoke의 결과로 모듈에 삽입된 코드는 완전히 관리됩니다.

섹션 내용

참고 항목

관리 코드에서 네이티브 함수 호출