【问题标题】:MRB_THROW causes error in libc++abi.dylibMRB_THROW 导致 libc++abi.dylib 中的错误
【发布时间】: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 依赖项

【问题讨论】:

    标签: c++ ios dylib mruby


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多