尝试将Jint引擎与Monotouch一起使用

时间:2012-03-19 10:21:37

标签: xamarin.ios jint

我想在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

我做错了什么?

1 个答案:

答案 0 :(得分:3)

我过去曾尝试过使用Jint和Jurassic和MonoTouch。

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

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

  • 回到Jint的旧版本 - 我认为0.9没有Reflection.Emit就可以了。
  • 放弃托管库并使用ios javascriptcore库 - 但要使用它需要编写大量绑定