Попытка использовать Jint Engine с Monotouch - PullRequest
1 голос
/ 19 марта 2012

Я хочу немного поэкспериментировать с Jint на Monotouch, и хотя проект Jint-Mono (не версия monotouch, а mono) работает на моем 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 Ответ

3 голосов
/ 19 марта 2012

В прошлом я пытался использовать Jint и Jurassic с MonoTouch.

Проблема, с которой я всегда сталкивался, заключается в том, что оба этих проекта используют Reflection.Emit для интерпретации JavaScript - и этоТип работы JIT не поддерживается на телефоне.Я подозреваю, что это то, что вы видите (посмотрите на вывод консоли, чтобы увидеть?)

Единственные решения, которые я нашел для этого, были:

  • возвращение к старой версии Jint- Я думаю, что в 0.9 не было Reflection.Emit.
  • отказ от управляемой библиотеки и использование библиотеки ios javascriptcore вместо этого - но для ее использования требовалось написать много привязок
...