是否可以在Boost库中禁用Exceptions和RTTI?

时间:2012-06-30 20:45:49

标签: c++ boost android-ndk

我为Android开发了一些本地库,并使用Boost库 - 只是基于头文件库。我面临的问题是,当我尝试将一些本机库与某个系统库链接时,会抛出UnsatisfiedLinkError。这是由于NDK文档中所述的不同C ++运行时:

  

您只能选择所有代码都将使用的单个C ++运行时   取决于。混合使用的共享库是不可能的   不同的C ++运行时。

系统库不使用RTTI和Exceptions,但我的库隐式使用它。 我知道有BOOST_EXCEPTION_DISABLEBOOST_NO_RTTI宏,但我无法使其正常工作。我试图将它们设置为编译器标志,并在config.hpp中,但没有运气 - 仍然会收到很多错误,如

cannot use typeid with -fno-rtti

如何在Boost中禁用这些功能,是否可能?

1 个答案:

答案 0 :(得分:5)

答案是“也许”。 一些boost库可以在禁用异常时使用 - 有些则不会。 同样适用于RTTI。

我建议您查看您感兴趣的特定boost库的文档。

例如,Boost.Array将禁用异常,但Boost.Format不会。

如果您收到cannot use typeid with -fno-rtti之类的消息,那么可能在编译需要RTTI的Boost的某些部分时。发生错误的地方会告诉你哪个库(通常)。