我正在尝试使用一些额外的 gem构建ios-ruby-embedded项目的修改版本,包括mruby-mgems列表中的mruby-marshal gem (其中包括一个 .cpp 文件)。我可以让它构建和运行,但如果我引发任何异常,应用程序在从 error.c 调用时崩溃,并显示以下消息:MRB_THROW
libc++abi.dylib: terminating with uncaught exception of type int
我怀疑问题是如何编译和链接 mRuby 异常处理的冲突:根据文档,如果包含 C++ 代码,它可以使用 setjmp/longjmp 处理或 C++ 异常;但是,我无法弄清楚我需要什么样的配置选项组合才能让它工作。
为了构建它,我对项目进行了一些更改:
- 在 Rakefile 中为每个目标添加 conf.cxx 部分(复制 conf.cc 部分中的设置)
- 在我正在使用的 Xcode 项目中将“-lc++”标志添加到“其他链接器标志”(源自mruby-ios-example项目)
- 在 mruby-marshal 项目中,使用mruby-pure-regexp gem 代替mruby-onig-regexp依赖