Funciones externas (F#)
En este tema se describe la compatibilidad con lenguajes de F# para llamar a funciones en código nativo.
[<DllImport( arguments )>]
extern declaration
Comentarios
En la sintaxis anterior, arguments representa los argumentos que se proporcionan al atributo DllImportAttribute. El primer argumento es una cadena que representa el nombre del archivo DLL que contiene esta función, sin la extensión .dll. Se pueden proporcionar argumentos adicionales para cualquiera de las propiedades públicas de la clase DllImportAttribute, como la convención de llamada.
Supongamos que hay un archivo DLL nativo de C++ que contiene la siguiente función exportada.
#include <stdio.h>
extern "C" void __declspec(dllexport) HelloWorld()
{
printf("Hello world, invoked by F#!\n");
}
Esta función se puede invocar en F# mediante el siguiente código.
open System.Runtime.InteropServices
module InteropWithNative =
[<DllImport(@"C:\bin\nativedll", CallingConvention = CallingConvention.Cdecl)>]
extern void HelloWorld()
InteropWithNative.HelloWorld()
La interoperabilidad con código nativo se denomina invocación de plataforma y es una característica del CLR. Para obtener más información, vea Interoperar con código no administrado. La información de esa sección es aplicable a F#.