我以统一的方式制作一个ios插件
// c code
#include <stdio.h>
typedef int (*callback_t) (int a, int b);
static callback_t my_callback;
void RegisterCallback (callback_t cb)
{
my_callback = cb;
}
int InvokeManagedCode (int a, int b)
{
if (my_callback == NULL){
printf ("Managed code has not initialized this library yet");
abort ();
}
return (*my_callback) (a, b);
}
// C#in unity
public class PluginImport : MonoBehaviour {
delegate int MyCallback1 (int a, int b);
[DllImport ("__Internal")]
extern static void RegisterCallback (MyCallback1 callback1);
[DllImport ("__Internal")]
extern static int InvokeManagedCode (int a, int b);
void Start () {
RegisterCallback(Add); //register call back
int i=InvokeManagedCode(44,4);
Debug.Log("in ios?"+i);
}
static int Add (int a, int b) { return a + b; } //my delegate in C#
static int Sub (int a, int b) { return a - b; }
}
运行良好的统一,但在ios抛出错误 ExecutionEngineException:在使用--aot-only运行时尝试JIT编译方法'(包装器本机到托管)PluginImport:Add(int,int)'。
at(wrapper managed-to-native)PluginImport:RegisterCallback(PluginImport / MyCallback1) 在PluginImport.Start()[0x00000]中:0
(文件名:行:-1) 如何在ios设备上反转Unity内部的本机回调? 请帮帮我。