vit*_*kot 8 c++ boost android-ndk
我为Android开发了一些原生库,并使用Boost库 - 只是基于头文件库.我面临的问题是,当我尝试将一些本机库与一些系统库链接时,UnsatisfiedLinkError会抛出它.这是由于NDK文档中所述的不同C++运行时:
您只能选择所有代码都依赖的单个C++运行时.不可能混合针对不同C++运行时编译的共享库.
系统库不使用RTTI和Exceptions,但我的库隐式使用它.我知道有宏BOOST_EXCEPTION_DISABLE和BOOST_NO_RTTI,但我不能让它工作.我试图将它们设置为编译器标志,并在config.hpp中,但没有运气 - 仍然有很多错误,如
cannot use typeid with -fno-rtti
Run Code Online (Sandbox Code Playgroud)
如何在Boost中禁用这些功能,甚至可能吗?
答案是"也许".一些boost库可以在禁用异常时使用 - 有些则不会.对于RTTI也是如此.
我建议您查看您感兴趣的特定boost库的文档.
例如,Boost.Array将禁用异常,但Boost.Format不会.
如果您收到类似的消息cannot use typeid with -fno-rtti,那可能是在编译需要RTTI的Boost的某些部分时.发生错误的地方会告诉你哪个库(通常).