首先编写C++代码,
创建一个C++空项目,命名为cinterop。修改项目的配置类型为动态链接库(.dll)。
添加一个头文件CInteropDLL.h,内容如下:
#define CINTEROPDLL_API __declspec(dllexport) extern "C" { void CINTEROPDLL_API HelloWorld(); }
再添加一个代码文件CInteropDLL.cpp,内容如下:
#include <stdio.h> #include "CInteropDLL.h" void CINTEROPDLL_API HelloWorld() { printf("Hello C world invoked by F#!\n"); }
编译项目,生成cinterop.dll文件。
创建一个F#控制台应用程序项目,名称任意。保存项目,以获得目录。然后将cinterop.dll文件复制到.exe文件所在的目录。
代码如下:
open System.Runtime.InteropServices module CInterop = [<DllImport("cinterop", CallingConvention = CallingConvention.Cdecl)>] extern void HelloWorld() CInterop.HelloWorld() System.Console.ReadLine() |> ignore
编译运行,Ok!