ヘッダStrsafe.hは次のようにこの機能をフィルタリングするために、2つの定義を使用して、問題のメソッドを定義:要するに
#if defined(STRSAFE_LOCALE_FUNCTIONS) && !defined(STRSAFE_NO_CB_FUNCTIONS)
/*++
STDAPI
StringCbPrintf_l(
_Out_writes_bytes_(cbDest) _Always_(_Post_z_) LPTSTR pszDest,
_In_ size_t cbDest,
_In_ _Printf_format_string_params_(2) LPCTSTR pszFormat,
_In_ locale_t locale,
...
);
Routine Description:
This routine is a version of StringCbPrintf that also takes a locale.
Please see notes for StringCbPrintf above.
--*/
#ifdef UNICODE
#pragma region Application Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
#define StringCbPrintf_l StringCbPrintf_lW
// ...
を、あなたがヘッダを含む前STRSAFE_LOCALE_FUNCTIONS
を定義する必要があります。以下のように:aformentioned APIを有効にするために、そう
#if defined(STRSAFE_LOCALE_FUNCTIONS) && !defined(STRSAFE_NO_CB_FUNCTIONS)
:<strsafe.h>
ヘッダ内の
#define STRSAFE_LOCALE_FUNCTIONS
#ifdef STRSAFE_NO_CB_FUNCTIONS
#pragma message("NO CB FUNCTIONS")
#endif
#include <strsafe.h>
奇妙な変種。私が考えることができるのは、小文字のl(ell)ではなく、大文字のI(目)で関数名を綴るプログラマーに.hファイルを見せてもらうことです。 –
#define STRSAFE_LOCALE_FUNCTIONSはトリックを行いました。ありがとう。私は欠けている定義をどのように逃したのか分かりません。 –
厳密には関係ありませんが、とにかく知っておいてください:* "STRSAFE_NO_CB_FUNCTIONS'または" STRSAFE_NO_CCH_FUNCTIONS "を定義することはできますが、両方は定義できません" *([About Strsafe.h](https://msdn.microsoft.com/ja) -us/library/windows/desktop/ms647466.aspx))。実際には驚きではありませんが、明白な明示を明示することは時々役に立ちます。 – IInspectable