C#使用MonoPInvokeCallback,让C直接回调C#函数
来源:互联网 发布:51单片机控制机箱风扇 编辑:程序博客网 时间:2024/06/08 01:20
iOS代码:Test.mm
char* TestMakeCString(NSString *str) { const char* string = [str UTF8String]; if (string == NULL) { return NULL; } char* res = (char*)malloc(strlen(string) + 1); strcpy(res, string); return res;}extern "C"{ typedef void (*TestCallback)(const char*eventName); TestCallback _myCallback; void _TestInit(TestCallback callback){ _myCallback=callback; }}@implementation Test-(void) test{ _myCallback(TestMakeCString(@"complete"));}@end
C#代码:test.csusing System.Runtime.InteropServices;public class Test{ public delegate void EventHandler(string eventName, string msg); public event EventHandler callbackHandler; internal delegate void TestCallBack(string eventName); [DllImport("__Internal")] private static extern void _TestInit(TestCallBack callback); [MonoPInvokeCallback(typeof(TestCallBack))] public static void onCallBack(string eventName){ if(eventName=="complete"){ //do something if(callbackHandler!=null)callbackHandler(eventName,"HIJK"); } } public static Test _instance; public static Test getInstance(){ if(_instance==null){ _instance=new Test(); } return _instance; } //初始接口 public void init(){ _TestInit(onCallBack); }}
test demo:Test test=Test.getInstance()test.init();test.callbackHandler+=handler;void handler(string eventName,string msg){ //do something}
阅读全文
0 0
- C#使用MonoPInvokeCallback,让C直接回调C#函数
- C# 使用 MonoPInvokeCallback,让 C 直接回调 C# 函数(C/C++ 跨平台方案)
- 让C# 函数拥有多个形参.
- C#直接调用DLL导出函数
- C# winForm中直接使用网站JS函数的快捷方法,可执行多种JS函数
- C#日期函数使用
- C# 使用SendMessage 函数
- C# 使用sendMessage函数
- c# split函数使用
- C# 使用SendMessage 函数
- c# split函数使用
- C# 委托 C函数指针
- C#中使用OpenGL:(六)C#中调用C函数时的参数传递问题
- c#公共类直接调方法
- C#中如何直接引用类的一个函数?
- C#调用C++/C库中的函数
- c#直接打印
- C# 直接下载文件
- react组件
- C#进阶 16 数组的声明
- U盘安装centos7
- Java中SimpleDateFormat用法详解
- 20170919前端第一天
- C#使用MonoPInvokeCallback,让C直接回调C#函数
- SpringBoots的使用
- Oracle中rank() over, dense_rank(), row_number() 的区别
- openstack安装rabbitmq时查看rabbitmq插件出现failed to connect rabbitmq@controller
- Struts2中action三种方式
- 51nod--1085--背包问题
- 格式良好的XML文档( well formed)
- unity手势插件《FingerGestures 》使用入门
- Python与数据结构总结(一)