Я пытаюсь использовать 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 хотя комментарии относятся к нему. Почему я не могу использовать универсальную форму, чтобы мое свойство «Набор символов» выбирало, какую версию использовать? Для свойства «Мой набор символов» установлено значение Использовать многобайтовый набор символов
Поскольку окна не предоставляют RtlStringCbPrintf, определите для этих двух функций. Из MSDN:
Используйте RtlStringCbPrintfW для обработки строк Unicode и
RtlStringCbPrintfA для обработки строк ANSI. Форма, которую вы используете, зависит от
ваши данные ..
В примере из msdn используется функция RtlStringCbPrintfW (), а не RtlStringCbPrintf ().
Вы можете определить RtlStringCbPrintf () самостоятельно:
#if defined(UNICODE)
# define RtlStringCbPrintf RtlStringCbPrintfA
#else
# define RtlStringCbPrintf RtlStringCbPrintfW
#endif