无法将 wchar_t 传递给 LibXL writeStr

Can't pass wchar_t to LibXL writeStr

我正在尝试将西里尔字符写入在 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*。有什么方法可以将我的国际字符写入单元格吗?

LibXL 为 ANSIUNICODE 版本的函数提供 headers。

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

您看到的 xlSheetWriteStr 实际上是一个最终具有值 xlSheetWriteStrAxlSheetWriteStrW 的宏。如果UNICODE前者没有定义,如果是de则后者.

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

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

的 ansi 版本

更新: 对于库的 OSX 版本,宏是 _UNICODE,前面有下划线(详见libxl.h)。