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

时间:2015-06-06 17:27:57

标签: c macos osx-mavericks icu

不幸的是,Apple没有在OSX上包含libicucore的头文件。有什么办法可以使用这个库吗?我只需要一些简单的功能,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的核心目标所包含的内容。我可以使用nm手动检查库中是否存在特定符号:

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

现在我可以从ICU的53.1.0版本手动获取u_strToUpper的标题,但这是很多工作。有没有更好的方法在OSX上查找或生成ICU core 53.1.0的头文件?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

您可以从Apple的网站或ICU官方网站下载头文件,并链接到系统的libicucore库。 但您无法将产品上传到App Store或Mac App Store。它会立即被拒绝,因为它使用私有API。 iTunes Connect具有自动脚本,可在您上传新二进制文件后检测此类引用。