p / Invoke委托导致Unity在iOS上崩溃

时间:2013-08-12 06:59:05

标签: ios delegates unity3d pinvoke aot

我以统一的方式制作一个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内部的本机回调? 请帮帮我。

0 个答案:

没有答案