質問

WinSockカーネルで rtlStringcbprintf を使用しようとしています。私は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 の宣言はありませんが、コメントはそれを参照しています。キャラクタ・セットプロパティーが使用するバージョンを選択するように一般的なフォームを使用できないのはなぜですか?マイキャラクタセットプロパティはを使用するマルチバイト文字セット

に設定されています。

役に立ちましたか?

解決

Windowsはこの2つの関数に対してRTLStringCBPrintfを定義していないためです。MSDNから:

Unicode文字列を処理するにはRTLStringCBPrintfwを使用します ANSI文字列を処理するためのRTLStringCBPrintfa。あなたが使用するフォームはそれによって異なります あなたのデータ..

MSDNからの例RTLStringCBPRINTF()ではなくRTLStringCBPRINTFW()関数を使用します。

RTLStringCBPrintf()を定義することができます。

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top