Pregunta

Estoy tratando de usar rtlstringcbprintf con el kernel de Winsock.He incluido ntstrsafe.h Pero el compilador me da el error

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

Si uso rtlstringcbprintfa o rtlstringcbprintfw , entonces se compila.¿Por qué no puedo usar la versión genérica?Mirando en ntstrsafe.h Veo las declaraciones de prototipos de rtlstringcbprintfa y rtlstringcbprintfw pero ninguna declaración para rtlstringcbprintf Aunque los comentarios se refieren a él.¿Por qué no puedo usar la forma genérica para que mi propiedad establezca mi carácter selecciona la versión para usar?Mi propiedad de conjunto de caracteres se establece en use el conjunto de caracteres multipunto

¿Fue útil?

Solución

Debido a que Windows no proporciona que RTLStringCBPRINTF se defina para estas dos funciones.De MSDN:

use rtlstringcbprintfw para manejar las cadenas de Unicode y Rtlstringcbprintfa para manejar cuerdas ANSI.El formulario que usa depende de Tus datos ..

El ejemplo de la función RTLSTRINGCBPRINTFW (), NO RTLSTRINGCBPRINTF ().

Puede definir rtlstringcbprintf () usted mismo:

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top