2

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

我已经创建了 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);
4

2 回答 2

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应该删除。为了与问题保持一致,我将其保留。

于 2011-05-13T11:46:15.187 回答
0

相反,我建议您使用模式为“静态”的 pkgdata 工具,它将构建一个静态库供您链接。另一个例子是无证和易碎的易碎方式。

于 2011-05-17T18:21:36.907 回答