icu和内存转换器

时间:2011-05-12 14:53:45

标签: icu

我想从内存创建一个转换器。

我已经创建了etrypoint_dat,然后从我的转换器创建了c文件并将两个结构连接在一起:

 },
    "", 1, 0, {
      { "ibm-5348_P100-1997", (const void *)&ibm_5348_P100_1997_cnv }
  }

从我调用的代码

  udata_setAppData("icupackage.dat", &ntrypoint_dat, &status); // return is good

现在我的问题: 如何在调用setAppData后创建转换器?

以下不起作用:

 UConverter* conv = ucnv_open("ibm-5348_P100-1997", &status);

2 个答案:

答案 0 :(得分:2)

我自己找到了。

必须以这种方式命名两个结构之间的连接:

{ "icupackage.dat/ibm-5348_P100-1997.cnv", (const void *)&ibm_5348_P100_1997_cnv },

然后从代码中我们可以调用:

  status = U_ZERO_ERROR;
  udata_setAppData("icupackage.dat", &ntrypoint_dat, &status);

然后:

  status = U_ZERO_ERROR;    
  _cnvCP1252 = ucnv_openPackage("windows", "ibm-5348_P100-1997.cnv", &status);

应删除.dat。我留下来与问题保持一致。

答案 1 :(得分:0)

我建议您使用pkgdata工具和'static'模式,它将构建一个静态库供您链接。另一个例子是无证且脆弱的脆弱方式。