RtlStringCbPrintf не находится в ntstrsafe.h, как описано

Я пытаюсь использовать RtlStringCbPrintf с ядром Winsock. Я включил Ntstrsafe.h, но компилятор выдает мне ошибку

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

Если я использую RtlStringCbPrintfA или же RtlStringCbPrintfW тогда это компилируется. Почему я не могу использовать универсальную версию? Глядя в Ntstrsafe.h я вижу объявления прототипа RtlStringCbPrintfA а также RtlStringCbPrintfW но нет декларации для RtlStringCbPrintf хотя комментарии относятся к нему. Почему я не могу использовать универсальную форму, чтобы мое свойство «Набор символов» выбирало, какую версию использовать? Для свойства «Мой набор символов» установлено значение Использовать многобайтовый набор символов

0

Решение

Поскольку окна не предоставляют RtlStringCbPrintf, определите для этих двух функций. Из MSDN:

Используйте RtlStringCbPrintfW для обработки строк Unicode и
RtlStringCbPrintfA для обработки строк ANSI. Форма, которую вы используете, зависит от
ваши данные ..

В примере из msdn используется функция RtlStringCbPrintfW (), а не RtlStringCbPrintf ().

Вы можете определить RtlStringCbPrintf () самостоятельно:

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

Другие решения


По вопросам рекламы [email protected]