icu初始化时资源包的读取失败

oliver 发布于 2009/07/02 23:15
阅读 1K+
收藏 0
ICU

最近在做icu移植工作,将icu4c(目前使用icu4c4.0)部署到我们自己的平台上,遇到不少编译的问题,其中最头疼的就是不知道ICU是怎么读取到初始化数据的。调试了代码,最后发现初始化的时候运行到udata.c的openCommonData函数中的

        tData.pHeader = &U_ICUDATA_ENTRY_POINT;
        udata_checkCommonData(&tData, pErrorCode);
        setCommonICUData(&tData, NULL, FALSE, pErrorCode);

这三句的时候没有得到数据导致初始化失败。其中U_ICUDATA_ENTRY_POINT经过宏替换后是icudt40_dat,tData是一块内存,它有一个头,头之后开始存放初始化的数据。ICU在windows下是能够得到数据的,但在我们的平台上就得不到,我想应该是移植的时候数据路径没有设置好。我想参照Windows取得数据的方法,可是特别对 tData.pHeader = &U_ICUDATA_ENTRY_POINT;这一句怎么工作得到数据的感到不解。有朋友知道它的工作过程么?谢谢。

PS: 有朋友知道ICU运行时是否会开一个或多个线程么?还是纯粹提供函数接口提供Unicode相关操作?

加载中
返回顶部
顶部