gpt4 book ai didi

c# - PInvoke C# : Function takes pointer to function as argument

转载 作者:可可西里 更新时间:2023-11-01 08:52:46 25 4
gpt4 key购买 nike

我想在我的 C# 代码中访问这个函数,这可能吗?所以最后 C++ 代码会调用我的函数并应用名为“sFrameofData”的结构。

C++代码:

//The user supplied function will be called whenever a frame of data arrives.
DLL int Cortex_SetDataHandlerFunc(void (*MyFunction)(sFrameOfData* pFrameOfData));

这也许行得通吗?

C#代码:

[DllImport("Cortex_SDK.dll")]
public extern static int Cortex_SetDataHandlerFunc(ref IntPtr function(ref IntPtr pFrameOfData) );

最佳答案

您想使用与“MyFunction”C++ 方法的方法签名相匹配的委托(delegate)。

[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate void MyFunctionDelegate(IntPtr frame);

[DllImport("Cortex_SDK.dll")]
public extern static int Cortex_SetDataHandlerFunc(
[MarshalAs(UnmanagedType.FunctionPtr)]MyFunctionDelegate functionCallback);

关于c# - PInvoke C# : Function takes pointer to function as argument,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5235445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com