在 C++ 中使用明確的 PInvoke (DllImport 屬性)

.NET Framework 提供明確的平台叫用 (或 PInvoke) 功能與 Dllimport 屬性,以允許 Managed 應用程式呼叫封裝在 DLL 內的 Unmanaged 函式。 當 Unmanaged API 封裝為 DLL 且原始程式碼無法使用的情況下,需要明確 PInvoke。 例如,呼叫 Win32 函式需要 PInvoke。 否則,請使用隱含 P{Invoke;如需詳細資訊,請參閱 使用 C++ Interop(隱含 PInvoke)。

PInvoke 的運作方式是使用 DllImportAttribute 。 這個屬性會採用 DLL 的名稱做為其第一個引數,會放在要使用的每個 DLL 進入點的函式宣告之前。 函式的簽章必須符合 DLL 匯出的函式名稱(但某些型別轉換可以透過定義 DllImport Managed 型別的宣告來隱含執行。

結果是每個原生 DLL 函式的 Managed 進入點,其中包含必要的轉換程式碼 (或 Thunk) 和簡單資料轉換。 Managed 函式接著可以透過這些進入點呼叫 DLL。 由於 PInvoke 的結果,插入模組的程式碼完全受控。

本節內容

另請參閱

從 Managed 程式碼呼叫原生函式