I am attempting to pass a managed function pointer void (*)(void *)
to my unmanaged library. My unmanaged library calls this callback with a pointer to a frame
EDIT: not a problem with cross-thread calls. If the unmanaged caller expects to call a __cdecl function, then you have to decorate the delegate type with an UnmanagedFunctionPointerAttribute attribute.
using namespace System::Runtime::InteropServices;
[UnmanagedFunctionPointerAttribute(CallingConvention::Cdecl)]
delegate void myCallbackDelegate(void * usr_data);