PInvoke C#: Function takes pointer to function as argument

You want to use a delegate that matches the method signature of your “MyFunction” C++ method. [UnmanagedFunctionPointer(CallingConvention.Cdecl)] public delegate void MyFunctionDelegate(IntPtr frame); [DllImport(“Cortex_SDK.dll”)] public extern static int Cortex_SetDataHandlerFunc( [MarshalAs(UnmanagedType.FunctionPtr)]MyFunctionDelegate functionCallback);