外部関数 External Functions
元ネタ http://msdn.microsoft.com/ja-jp/library/dd393785.aspx
次のエクスポート関数を含むネイティブ C++ DLL があると仮定します。
#include <stdio.h> extern "C" void __declspec(dllexport) HelloWorld() { printf("Hello world, invoked by F#!\n"); }
この関数は、次のコードを使用して F# から呼び出すことができます。
F#
open System.Runtime.InteropServices module InteropWithNative = [<DllImport(@"C:\bin\nativedll", CallingConvention = CallingConvention.Cdecl)>] extern void HelloWorld() InteropWithNative.HelloWorld()
書き方は C# でも F# でも同じ。
C#
using System.Runtime.InteropServices;
class InteropWithNative
{
[DllImport(@"C:\bin\nativedll", CallingConvention = CallingConvention.Cdecl)]
public static extern void HelloWorld();
}
class Program()
{
void Main()
{
InteropWithNative.HelloWorld();
}
}