2014-11-24 2 views
0

Недавно я перешел от использования ICU32 к ICU51. Но теперь таблица сопоставления (.ucm) не загружается. Я искал чистый муравей, испробовал исправления, например, убедившись, что путь верен и заканчивается обратным слэшем, но таблица отображения не загружается.ICU 51 не загружает таблицу сопоставления данных ICU

sprintf((CCharT *)icuDataDir,"C:\\mybuilds\\icu_data\\"); 
u_setDataDirectory((CCharT *)icuDataDir); 
u_init(&test); 
retval = ucnv_countAvailable(); 
for(count_converter = 0 ;count_converter<retval; count_converter++) 
     available_converters = ucnv_getAvailableName(count_converter); 

значение теста U_ZERO_ERROR, RetVal 230. Но в списке доступных преобразователей я не могу видеть имя таблиц отображения, хранящихся в «C: \ mybuilds \ icu_data \».

Использование Process Monitor я обнаружил, что Мое приложение пытается получить доступ к C: \ mybuilds \ icu_data \ icu51l \ My-cinversion-table.cnv файл но ранее он работал с C: \ mybuilds \ icu_data \ мой-cinversion-table.ucm.

ответ

0

ICU_DATA необходимо установить в каталог, содержащий файл .cnv. * .ucm необходимо преобразовать в файл .cnv с помощью утилиты «makeconv.exe», поставляемой с библиотекой icu, и поместить этот .cnv-файл в папку ICU_DATA -> icu51l решает проблему.

Process Monitor помог найти место, где icu искал таблицу отображения icu.