我可以使用函数指针跨越编程语言范围来调用函数吗?

时间:2019-02-25 11:01:25

标签: c# c++ function function-pointers

C#应用程序对C ++ DLL具有静态依赖关系。可以说C#应用程序中有一个函数,如下所示:

void foo(int a)
{
   Console.WriteLine(a);
}

C ++ DLL具有如下所示的导出函数。

typedef void (*Func_t)(int);
extern "C" __declspec(dllexport) void bar(Func_t f)
{
   f(5);
}

我可以从C#应用程序调用{​​{1}}函数并传递bar()作为参数,并期望打印出“ 5”吗?

foo()

1 个答案:

答案 0 :(得分:0)

定义代表

[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
delegate void Func_t(int a);

导入功能

[DllImport(...)]
static extern void bar(Func_t f);

用法

bar(foo);