我正在尝试使用 rtlstringcbprintf winsock内核。我已经包括ntstrsafe.h,但编译器给了我错误

Error 4 error C3861: 'RtlStringCbPrintf': identifier not found  c:\bw\epic_sl\musslcomm\musslcomm\commmessenger\socketx.h   124 1   CommMessenger
.

如果我使用 rtlstringcbrintfa rtlstringcbrintfw 那么它确实编译。为什么我不能使用通用版本?查看NTStrsafe.h我看到 rtlstringcbprintfa rtlstringcbrintfw 但没有声明 rtlstringcbprintf 虽然注释是指的,但虽然评论是指的,但虽然评论是指的,但虽然注释是指的,但是如果评论引用它,则没有声明为什么我不能使用通用形式,以便我的字符集属性选择要使用的版本?我的字符集属性设置为使用多字节字符集

有帮助吗?

解决方案

因为Windows不提供RTLStringCBPrintf为此两个功能定义。来自MSDN:

使用rtlstringcbprintfw处理Unicode字符串和 RTLStringcbrintfa处理ANSI字符串。您使用的表格取决于 您的数据..

来自MSDN的示例使用rtlstringcbprintfw()函数,而不是rtlstringcbprintf()。

您可以自己定义RTLStringcbprintf():

#if defined(UNICODE)
# define RtlStringCbPrintf RtlStringCbPrintfA
#else
# define RtlStringCbPrintf RtlStringCbPrintfW
#endif
.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top