1

我想在 Monotouch 上尝试一下 Jint,虽然 Jint-Mono 项目(不是 monotouch 版本,而是单声道)在我的 mac 上工作,但我无法让它在 iPhone 上工作。我刚刚创建了这个类:

namespace iPhoneTests
{
    public class JintObject
    {
        public JintObject ()
        {
        var jintEngine = new JintEngine();
        jintEngine.Run
                    (
                    @"Console.WriteLine('Hello World')"
                    );

        }
    }
}

每当我尝试调用 JintObject 方法时,我都会收到异常错误:

Unhandled Exception: System.TypeLoadException: A type load exception has occurred.
  at Jint.Marshaller.WrapMethod (System.Reflection.MethodInfo info, Boolean passGlobal) [0x00000] in <filename unknown>:0 
  at Jint.Native.NativeMethod..ctor (System.Reflection.MethodInfo info, Jint.Native.JsObject prototype, IGlobal global) [0x00000] in <filename unknown>:0 
  at Jint.Native.NativeConstructor.ReflectOverload (ICollection`1 methods) [0x00000] in <filename unknown>:0

我究竟做错了什么?

4

1 回答 1

3

过去我曾尝试将 Jint 和 Jurassic 与 MonoTouch 一起使用。

我一直遇到的问题是,这两个项目都使用 Reflection.Emit 来解释 JavaScript——而手机不支持这种类型的 JIT 操作。我怀疑这就是您所看到的(查看控制台输出以查看?)

我为此找到的唯一解决方案是:

  • 回到旧版本的 Jint - 我认为 0.9 中没有 Reflection.Emit。
  • 放弃托管库并改用 ios javascriptcore 库 - 但要使用它需要编写大量绑定
于 2012-03-19T11:19:31.443 回答