在为android编译ICU时,遇到以下错误:
/home/tim/icu49/icu/source/i18n/strmatch.cpp: In member function 'virtual icu_49::UnicodeString& icu_49::StringMatcher::toPattern(icu_49::UnicodeString&, UBool) const':
/home/tim/icu49/icu/source/i18n/strmatch.cpp:166: error: 'ICU_Utility' has not been declared
/home/tim/icu49/icu/source/i18n/strmatch.cpp:168: error: 'ICU_Utility' has not been declared
/home/tim/icu49/icu/source/i18n/strmatch.cpp:176: error: 'ICU_Utility' has not been declared
/home/tim/icu49/icu/source/i18n/strmatch.cpp: In member function 'virtual icu_49::UnicodeString& icu_49::StringMatcher::toReplacerPattern(icu_49::UnicodeString&, UBool) const':
/home/tim/icu49/icu/source/i18n/strmatch.cpp:243: error: 'ICU_Utility' has not been declared
make[1]: *** [strmatch.ao] Error 1
make[1]: Leaving directory `/home/tim/icu49/icu-android/i18n'
make: *** [all-recursive] Error 2更新.作为一个黑客,这可以用-DUCONFIG_NO_TRANSLITERATION解决(基本上忽略违规块)。这样做可以让您通过“strmedi.cpp”,但是错误会在dbgutil.cpp:143和145中重新出现。使用-DUCONFIG_NO_FORMATTING可修复(失去另一个特性.)(下一期:函数icu_49::IcuToolErrorCode::~IcuToolErrorCode()': toolutil.cpp:(.text+0x400): undefined reference to__cxa_end_cleanup')
Update2。这个很奇怪。我撤消了配置更改。在i18n/strmedi.cpp中,包含了"util.h“。但是它似乎从未被调用过,这就是为什么没有定义ICU_Utility的原因。("util.h“位于icu/source/util.h中)。有趣的是,如果您使用#include“./util.h/util.h”而不是使用#include "util.h“,它就能工作。
当然,这现在说得通了,因为
tim@N01:~/icu49$ find android-ndk-r7b/ -name util.h
android-ndk-r7b/platforms/android-4/arch-x86/usr/include/util.h
android-ndk-r7b/platforms/android-4/arch-arm/usr/include/util.h
android-ndk-r7b/platforms/android-8/arch-x86/usr/include/util.h
android-ndk-r7b/platforms/android-8/arch-arm/usr/include/util.h
android-ndk-r7b/platforms/android-14/arch-x86/usr/include/util.h
android-ndk-r7b/platforms/android-14/arch-arm/usr/include/util.h
android-ndk-r7b/platforms/android-3/arch-x86/usr/include/util.h
android-ndk-r7b/platforms/android-3/arch-arm/usr/include/util.h
android-ndk-r7b/platforms/android-5/arch-x86/usr/include/util.h
android-ndk-r7b/platforms/android-5/arch-arm/usr/include/util.h
android-ndk-r7b/platforms/android-9/arch-x86/usr/include/util.h
android-ndk-r7b/platforms/android-9/arch-arm/usr/include/util.h发布于 2012-03-20 10:31:53
将android版本从util.h重命名为_util.h可以快速解决这个问题。
https://stackoverflow.com/questions/9780999
复制相似问题