Question

J'essaie d'utiliser rtlstringcbprintf avec noyau Winsock.J'ai inclus ntstrsafe.h mais le compilateur me donne l'erreur

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

Si j'utilise rtlstringcbprintfa ou rtlstringcbprintfw alors il compile.Pourquoi ne puis-je pas utiliser la version générique?En regardant dans Ntstrsafe.h Je vois des déclarations de prototype de rtlstringcbprintfa et rtlstringcbprintfw mais aucune déclaration pour rtlstringcbprintf Bien que les commentaires se rapportent.Pourquoi ne puis-je pas utiliser la forme générique de sorte que la propriété de mon personnage sélectionne la version à utiliser?Ma propriété de jeu de caractères est définie sur Utilisez le jeu de caractères multi-octets

Était-ce utile?

La solution

Parce que Windows ne fournit pas RTLStringCBPRINTF Définir pour ces deux fonctions.De MSDN:

Utilisez RTLSTRINGCBPRINTFW pour gérer les chaînes UNICODE et Rtlstringcbprinterfa pour gérer les chaînes ANSI.Le formulaire que vous utilisez dépend de vos données ..

L'exemple de MSDN Utilisez la fonction RTLSTRINGCBPRINTFW (), pas RTLStringCBPRINTF ().

Vous pouvez définir vous-même RTLSTRINGCBPRINTF () vous-même:

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top