1

我正在尝试使用一些额外的 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依赖
4

1 回答 1

0

解决方案是将-fexceptions标志添加到 C 编译器标志列表中。我用我用来解决这个问题的 Rakefile准备了一个要点conf.cc,注意标志。

于 2017-09-04T22:34:24.473 回答