2017-08-26 6 views
1

J'essaye de construire une version modifiée du projet ios-ruby-embedded avec quelques gemmes supplémentaires, y compris le gem mruby-marshal de la liste mruby-mgems (qui inclut un fichier .cpp). Je peux l'obtenir pour construire et exécuter, mais si je soulève une exception les application se bloque lorsqu'il appelle MRB_THROW de error.c avec le message suivant:MRB_THROW provoque une erreur dans libC++ abi.dylib

libc++abi.dylib: terminating with uncaught exception of type int 

Je soupçonne que le problème est un conflit dans la façon dont la gestion des exceptions mRuby est en train d'être compilé et lié: selon la documentation, il peut utiliser la gestion setjmp/longjmp ou les exceptions C++ si le code C++ est inclus; Cependant, je n'arrive pas à comprendre quelle combinaison d'options de configuration j'ai besoin pour le faire fonctionner.

Pour obtenir de construire, je fait quelques changements au projet:

  • Ajouter les sections conf.cxx pour chaque cible dans le Rakefile (dupliquer les paramètres dans les sections de conf.cc)
  • Ajoutez le « -lC++ » drapeau « Autres drapeaux Linker » dans le projet Xcode J'utilise (dérivé du projet mruby-ios-example)
  • dans le projet mruby-maréchal, utilisez la gemme mruby-pure-regexp au lieu de la dépendance mruby-onig-regexp

Répondre

0

La solution consistait à ajouter l'indicateur -fexceptions à la liste des indicateurs du compilateur C. J'ai préparé un gist avec le Rakefile que j'avais l'habitude de fixer ceci, notez les drapeaux conf.cc.