我可以使用函数指针调用跨编程语言边界的函数吗?

问题描述 投票:0回答:1

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#应用程序调用bar()函数并将foo()作为参数传递并期望打印“5”吗?

bar(foo);
c# c++ function function-pointers
1个回答
0
投票

定义委托

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

导入功能

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

用法

bar(foo);
© www.soinside.com 2019 - 2024. All rights reserved.