我正在尝试构建ios-ruby-embedded项目的修改版本,其中包含一些额外的gem,包括mruby-marshal列表(包括.cpp文件)中的mruby-mgems gem。我可以构建并运行它,但是如果引发任何异常,则应用程序在从error.c调用MRB_THROW并显示以下消息时会崩溃:

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

我怀疑问题出在如何编译和链接mRuby异常处理方面存在冲突:根据文档,如果包括C++代码,它可以使用setjmp / longjmp处理或C++异常;但是,我无法弄清楚我需要哪种配置选项才能正常工作。

为了构建它,我对项目进行了一些更改:
  • 为Rakefile中的每个目标添加conf.cxx部分(复制conf.cc部分中的设置)
  • 将'-lc++'标志添加到我正在使用的Xcode项目中的'Other Linker Flags'(源自mruby-ios-example项目)
  • 在mruby-marshal项目中,使用mruby-pure-regexp gem而不是mruby-onig-regexp依赖项
  • 最佳答案

    解决方案是将-fexceptions标志添加到C编译器标志列表。我准备了用于修复此问题的Rakefile的gist,请注意conf.cc标志。

    08-16 03:19