在 OSX 上为 ICU 核心生成或查找 C headers

Generate or find C headers for ICU core on OSX

遗憾的是,Apple 未在 OSX 上包含 libicucore 的 header 个文件。有什么办法我仍然可以使用这个库吗?我只需要一些简单的功能,而 ICU 太大而无法与我的应用程序捆绑在一起。看起来 ICU 版本 53.1.0 是相当新的:

jeroen$ otool -L /usr/lib/libicucore.dylib
libicucore.dylib:
    /usr/lib/libicucore.A.dylib (compatibility version 1.0.0, current version 53.1.0)
    /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1213.0.0)

让事情变得复杂的是,我很难找出 ICU 的 core 目标中包含的内容。我可以使用 nm 手动检查库中是否存在特定符号:

jeroen$ nm /usr/lib/libicucore.dylib | grep ToUpper
00000000000b74c9 T _u_strToUpper
000000000006ff70 T _ucasemap_utf8ToUpper

现在我可以从 ICU 的 53.1.0 版本中手动获取 u_strToUpper 的 header,但这需要大量工作。有没有更好的方法在 OSX 上为 ICU 核心 53.1.0 查找或生成 header?

看来我最好的选择是从 apple website 中获取 headers。此存储库还包括 libicucore.dylib 的 makefile,它使用 --with-data-packaging=archive 将 ICU 数据表放入独立文件 /usr/share/icu/icudt51l.dat 中。

您可以从Apple 网站或ICU 官网下载头文件,并link 针对系统的libicucore 库。 但是您不能将产品上传到 App Store 或 Mac App Store。它将立即被拒绝为使用 private API 的人。 iTunes Connect 具有自动脚本,可在您上传新的二进制文件后检测此类引用。