2012-03-19 62 views
1

我想在Monotouch上試驗一下Jint,雖然Jint-Mono項目(不是monotouch版本,但單聲道)在我的mac上工作,但我無法使其工作爲iPhone。我只是裝箱這個類:試圖在Monotouch上使用Jint引擎

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 

我在做什麼錯?

+0

請用新的版本,這是一個PCL https://github.com/嘗試sebastienros/jint https://www.nuget.org/packages/Jint公告:https://jint.codeplex.com/discussions/536901 – 2014-03-03 06:06:00

回答

3

我試過在過去使用Jint和Jurassic與MonoTouch。

我一直遇到的問題是,這兩個項目都使用Reflection.Emit來解釋JavaScript - 並且該類型的JIT操作在手機上不受支持。我懷疑這是你所看到的(?看看控制檯輸出,看看)

,我發現這樣做的唯一的解決辦法是:

  • 回到舊版本Jint的 - 我覺得0.9有沒有Reflection.Emit在它。
  • 放棄一個託管庫,並使用IOS JavaScriptCore的庫,而不是 - 而是利用這個需要大量的綁定寫入
+0

我打算用最早的版本測試它,我會讓你知道。謝謝。 – alecnash 2012-03-19 11:45:42

+0

完美的作品。沒有Reflection.Emit的版本是0.8.9。 – alecnash 2012-03-20 08:06:36

+0

我希望0.8.9能在Mono中工作,但是Moma發現有16種方法沒有實現。 :( – 2013-05-26 22:55:39