外部函式 (F#)
本主題描述 F# 語言對機器碼中函式呼叫的支援。
[<DllImport( arguments )>]
extern declaration
備註
在先前的語法中,arguments 表示提供給 DllImportAttribute 屬性的引數。 第一個引數是表示含有此函式之 DLL 名稱的字串,但不含副檔名 .dll。 可以針對 DllImportAttribute 類別的任何公用屬性,提供其他引數 (例如呼叫慣例)。
假設原生 C++ DLL 包含下列匯出的函式。
#include <stdio.h>
extern "C" void __declspec(dllexport) HelloWorld()
{
printf("Hello world, invoked by F#!\n");
}
您可以使用下列程式碼,從 F# 呼叫此函式。
open System.Runtime.InteropServices
module InteropWithNative =
[<DllImport(@"C:\bin\nativedll", CallingConvention = CallingConvention.Cdecl)>]
extern void HelloWorld()
InteropWithNative.HelloWorld()
與機器碼的互通性稱為「平台叫用」(Platform Invoke),是 CLR 的功能。 如需詳細資訊,請參閱與 Unmanaged 程式碼互通。 該章節中的資訊也適用於 F#。