将ICU包含在Android NDK项目中

5
我用C++编写了一个库,想要在我的Android应用程序中使用NDK来包含它。然而,我的库需要使用ICU4C。 我一直在尝试为Android编译ICU,并查看了许多关于此的问题,但我仍然无法将ICU编译成.a文件以供Android使用。我不确定最佳方法是什么。 有没有人成功地在NDK中使用ICU? 顺便说一下,我希望使用ICU 51.2版本,除非有充分的理由使用旧版本。
1个回答

2
您可以通过在 Android.mk 中指定以下标志来构建 ICU 作为 Android 静态库。
LOCAL_CFLAGS := -DANDROID -fdata-sections -ffunction-sections
LOCAL_CPPFLAGS := -DANDROID -frtti -fno-exceptions -fdata-sections -ffunction-sections

如果你在使用Android NDK时没有使用异常处理,你需要修改缺失的cxa_bad_typeid()函数。

extern "C" std::type_info const& __cxa_bad_typeid()
{
   // just return something
   return typeid(void*);
}

extern "C"жҳҜдёәдәҶйҒҝе…Қ__cxa_bad_typeidзҡ„еҗҚз§°ж··ж·Ҷеҗ—пјҹеҰӮжһңжҳҜиҝҷж ·пјҢжӮЁзҹҘйҒ“и§ЈеҶій“ҫжҺҘеҷЁиӯҰе‘Ҡзҡ„ж–№жі•еҗ—пјҡвҖң__cxa_bad_typeidе…·жңүжҢҮе®ҡCй“ҫжҺҘзҡ„Cй“ҫжҺҘпјҢдҪҶиҝ”еӣһдёҖдёӘдёҺCдёҚе…је®№зҡ„з”ЁжҲ·е®ҡд№үзұ»еһӢ'const std :: type_infoпјҶ'гҖӮвҖқжҲ‘еҸҜд»ҘзҰҒз”ЁиӯҰе‘ҠпјҢдҪҶжҲ‘жғізҹҘйҒ“жҳҜеҗҰжңүйҖӮеҪ“зҡ„ж–№жі•жқҘи§ЈеҶіиҝҷдёӘй—®йўҳгҖӮ - davidA
@meowsqueak 你可以使用 void* __cxa_bad_typeid(),但这种方法更糟糕且不安全。 - Sergey K.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接