При компиляции ICU для Android возникает следующая ошибка:
/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 (в основном игнорирует нарушающий блок),В результате вы получите «strmatch.cpp», но ошибка снова появится в dbgutil.cpp: 143 и 145. Исправлено с помощью -DUCONFIG_NO_FORMATTING (потеря другой функции ...) (Следующая проблема: в функции icu_49::IcuToolErrorCode::~IcuToolErrorCode()':
toolutil.cpp:(.text+0x400): undefined reference to
__ cxa_end_cleanup ')
Обновление 2. Это очень странно.Я отменил свои изменения конфигурации.В i18n / strmatch.cpp включен "util.h".Но кажется, что он никогда не вызывается, поэтому ICU_Utility не определена.(«util.h» находится в icu / source / common).Интересно, что если вы используете #include "../common/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