PInvoke C#:Function将指针作为参数
我想在我的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 ++方法的方法签名匹配的委托。
[UnmanagedFunctionPointer(CallingConvention.Cdecl)] public delegate void MyFunctionDelegate(IntPtr frame); [DllImport("Cortex_SDK.dll")] public extern static int Cortex_SetDataHandlerFunc( [MarshalAs(UnmanagedType.FunctionPtr)]MyFunctionDelegate functionCallback);
我不确定什么是正确的方法,但我不认为使用ref IntPtr来实现function和结构……
请看这里寻求帮助: C#P / Invoke:包含函数指针的编组结构