无法将wchar_t传递给LibXL writeStr

时间:2017-11-23 13:38:34

标签: c++ c macos libxl

我想将西里尔字符写入在OSX应用中生成的电子表格中:

sheet = xlBookAddSheet(book, "Output", 0);
detailFormat = xlBookAddFormat(book, 0);
wchar_t *w_user = (wchar_t*)malloc(max_chars * sizeof(wchar_t));
//get wchar_t characters...
xlSheetWriteStr(sheet, row, column, w_user, detailFormat);

但最后一行不会编译,因为xlSheetWriteStr期待const char*代替w_user。

根据docs,我应该可以传递const wchar_t*。有没有办法将我的国际角色写入单元格?

1 个答案:

答案 0 :(得分:1)

LibXL为函数的ANSIUNICODE版本提供标题。

愿意使用API​​的unicode版本的程序应该定义UNICODE宏。如果您使用的是Visual Studio,只需转到Project -> Properties -> Character Set并将其设置为Use Unicode Character Set即可。

您看到的xlSheetWriteStr实际上是一个最终具有值xlSheetWriteStrAxlSheetWriteStrW的宏。如果UNICODE没有定义前者,如果是晚些时候。

函数xlSheetWriteStrASheetA.h中声明,而xlSheetWriteStrWSheetW.h中声明。

注意:如果您保持一致,那就更好了。如果使用函数的unicode版本,请使用所有函数的unicode版本。我这样说是因为在你的例子中我看到你使用的是xlBookAddSheet的ansi版本。

更新:对于OSX版本的库,宏是 _UNICODE ,带有前面的下划线(有关详细信息,请参阅libxl.h)。