Funzioni esterne (F#)
In questo argomento viene descritto il supporto del linguaggio F# per la chiamata di funzioni nel codice nativo.
[<DllImport( arguments )>]
extern declaration
Note
Nella sintassi precedente arguments rappresenta gli argomenti forniti all'attributo DllImportAttribute. Il primo argomento è una stringa che rappresenta il nome della DLL che contiene questa funzione, senza l'estensione dll. È possibile fornire argomenti aggiuntivi per qualsiasi proprietà pubblica della classe DllImportAttribute, ad esempio la convenzione di chiamata.
Si presupponga di disporre di una DLL C++ nativa contenente la funzione esportata seguente:
#include <stdio.h>
extern "C" void __declspec(dllexport) HelloWorld()
{
printf("Hello world, invoked by F#!\n");
}
È possibile chiamare questa funzione da F# utilizzando il codice seguente:
open System.Runtime.InteropServices
module InteropWithNative =
[<DllImport(@"C:\bin\nativedll", CallingConvention = CallingConvention.Cdecl)>]
extern void HelloWorld()
InteropWithNative.HelloWorld()
L'interoperabilità con il codice nativo viene definita platform invoke ed è una funzionalità di CLR. Per ulteriori informazioni, vedere Interoperabilità con codice non gestito. Le informazioni in questa sezione si applicano a F#.