【发布时间】:2018-02-04 03:27:27
【问题描述】:
我正在尝试使用一些额外的 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 依赖项
【问题讨论】: