Поделиться через


Внешние функции (F#)

В этом разделе описывается поддержка вызова функций в машинном коде, предоставляемая языком F#.

[<DllImport( arguments )>]
extern declaration

Заметки

В приведенной выше синтаксической конструкции arguments представляет собой аргументы, передаваемые атрибуту DllImportAttribute. Первый аргумент содержит строку, представляющую имя библиотеки DLL, содержащей данную функцию, но без расширения DLL. Для любого из открытых свойств класса DllImportAttribute могут быть указаны дополнительные аргументы, такие как соглашение о вызове.

Предположим, что имеется DLL-файл машинного кода C++, содержащий следующую экспортированную функцию.

#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()

Взаимодействие с машинным кодом называется вызовом неуправляемого кода и является функцией среды CLR. Дополнительные сведения см. в разделе Взаимодействие с неуправляемым кодом. Сведения из этого раздела применимы к языку F#.

См. также

Ссылки

Функции (F#)