c++ - 在 Android NDK 项目中包含 ICU

标签 c++ c android-ndk java-native-interface icu

我用 C++ 构建了一个库,我想使用 NDK 将其包含在我的 Android 应用程序中。但是,我的图书馆需要使用 ICU4C。 我一直在尝试为 Android 编译 ICU,我在这里查看了很多关于 SO 的问题,但我仍然无法将 ICU 编译为 .a Android 文件。我不确定执行此操作的最佳方法。 有没有人使用 NDK 在 ICU 上取得成功?

顺便说一句,我希望使用 ICU 51.2,除非有充分的理由使用旧版本。

最佳答案

您可以通过在 Android.mk

中指定这些标志将 ICU 构建为 Android 静态库
LOCAL_CFLAGS := -DANDROID -fdata-sections -ffunction-sections
LOCAL_CPPFLAGS := -DANDROID -frtti -fno-exceptions -fdata-sections -ffunction-sections

如果您毫无异常(exception)地使用 Android NDK,您将需要破解缺少的 cxa_bad_typeid()

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

关于c++ - 在 Android NDK 项目中包含 ICU,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18235428/

相关文章:

c++ - 程序将不再编译

c - 在 Swift 中使用 C - strlcpy - 无法转换类型 'UnsafeMutablePointer<_>' 的值

c - 无符号字符困扰我的代码

c - Julia - C 结构中的固定大小数组

android - 我无法将预建库包含到 android studio 中

android - 在真机上运行Android+Opencv+NDK App

c++ - 使用 cvProjectPoints2 时 OpenCV -"Homogeneous coordinates are not supported"

C++ 编译的应用程序

c++ - 删除或修改作为不同索引的键的值时,boost::multi_index 迭代器是否无效?

android - 在 Android 上使用 Address Sanitizer 构建,但使用 CMake