0

我正在尝试将RtlStringCbPrintf与 Winsock 内核一起使用。我已经包含了 Ntstrsafe.h 但编译器给了我错误

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

如果我使用RtlStringCbPrintfARtlStringCbPrintfW那么它会编译。为什么我不能使用通用版本?在 Ntstrsafe.h 中,我看到RtlStringCbPrintfARtlStringCbPrintfW的原型声明,但没有RtlStringCbPrintf的声明,尽管评论引用了它。为什么我不能使用通用表单以便我的字符集属性选择要使用的版本?我的字符集属性设置为使用多字节字符集

4

1 回答 1

3

因为windows没有为这两个函数提供RtlStringCbPrintf定义。来自 msdn:

使用 RtlStringCbPrintfW 处理 Unicode 字符串,使用 RtlStringCbPrintfA 处理 ANSI 字符串。您使用的表格取决于您的数据。

msdn 中的示例使用 RtlStringCbPrintfW() 函数,而不是 RtlStringCbPrintf()。

您可以自己定义 RtlStringCbPrintf() :

#if defined(UNICODE)
# define RtlStringCbPrintf RtlStringCbPrintfA
#else
# define RtlStringCbPrintf RtlStringCbPrintfW
#endif
于 2014-07-30T18:10:05.803 回答