C# 使用 MonoPInvokeCallback,让 C 直接回调 C# 函数(C/C++ 跨平台方案)
来源:互联网 发布:易观智库数据 编辑:程序博客网 时间:2024/06/05 18:17
NanoClient.cs 定义回调
using UnityEngine;using System.Runtime.InteropServices;using System;using AOT;namespace NanoLink { // 用于事件处理器传参数 public class NanoEventArgs : EventArgs { public readonly string name; public NanoEventArgs (string v) { name = v; } } public class NanoClient { public delegate void NanoListener (string eventName); public static event EventHandler onNanoLinkEvent; [MonoPInvokeCallback(typeof(NanoListener))] public static void listener (string name) { Debug.Log ("Event: " + name); var handler = onNanoLinkEvent; if (handler != null) { handler (null, new NanoEventArgs (name)); } } // 安装 监听器 nano_hook (new NanoListener (listener)); // 释放 监听器 // nano_hook (null); // DllImport nanolink [DllImport ("nanolink")] private static extern bool nano_hook (NanoListener fp); }}
NanoService.cs 使用
void Start () { ... // 安装事件监听器 NanoClient.onNanoLinkEvent += onNanoLinkEvent; ...}// protected virtual void onNanoLinkEvent (object sender, EventArgs args) {}
[MonoPInvokeCallback(typeof(NanoListener))]
没有这个标签声明就无法回调成功。(在 PC 和 Mac 没有这个标签也可以工作)
使用这个方法就可以保证编码效率和执行效率,你不需要进行各种中间层的封装,不需把字符串转来转去,这完全归功于 Mono 的跨平台机制,Unity 只是进行了一些简便操作
另外需要注意的是Android可能需要编译各种对应的 .so,其实用 Android Studio 一下子全部编译出来然后丢到 Unity 就 Ok
阅读全文
1 0
- C# 使用 MonoPInvokeCallback,让 C 直接回调 C# 函数(C/C++ 跨平台方案)
- C#使用MonoPInvokeCallback,让C直接回调C#函数
- C#调用C++/C库中的函数
- c#调用c++dll方案总结
- c++&c#
- C# 委托 C函数指针
- c/c++/c#
- c/c++/c#
- c/c++/c#
- c/c++/c# 浅析
- C/C++/C# 程序库
- C/C++/C#基础(
- C#中使用OpenGL:(六)C#中调用C函数时的参数传递问题
- [C#]用mono写跨平台的C#程序
- C实现分割字符串(使用strtok_s函数,完成C#的Split函数功能)
- C/C++/C#面试题(4)
- C/C++/C#面试题(5)
- C#调用C、C++dll
- java:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
- Tensorflow安装步骤
- 带宽与延时知识整理
- 数组、ArrayList、List、LinkedList的区别
- iOS 颜色渐变
- C# 使用 MonoPInvokeCallback,让 C 直接回调 C# 函数(C/C++ 跨平台方案)
- linux 安装 git
- sdl2.0 线程
- c语言简单的数据结构动态链表
- 从Inception v1,v2,v3,v4,RexNeXt到Xception再到MobileNets,ShuffleNet
- Itellij ideal "Cannot load this JVM TI agent twice, check your java command line for duplicate jd"
- 目前最流行的运行时权限请求框架PermissionsDispatcher、RxPermissions和easypermissions的使用和对比
- struts 框架介绍 原理透析 struts概念说明
- Java内部类、匿名类及this使用