Wir haben (fälschlicherweise) StringCbPrintfW verwendet, um eine Datenbankabfrage zu schreiben, die kläglich auf einem Gebietsschema fehlschlägt, das ein Komma als Dezimaltrennzeichen verwendet. Fix ist einfach genug, oder? StringCbPrintf_lW, das ein Gebietsschema verwendet, wird ebenfalls in strsafe.h definiert. Beide sind definiert unter:Locale-bewusste Version der StrSafe-Funktion (StringCbPrintf_lW) kann nicht gefunden werden
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
so nur das Gebietsschema erstellen und ersetzen StringCbPrintfW mit StringCbPrintf_lW.
Intellisense ist glücklich, GoToDefinition ist glücklich, ClCompile ist nicht. Ich bekomme ständig
Fehler C3861: 'StringCbPrintf_lW': Bezeichner nicht
gefunden
Irgendwelche Ideen, was falsch ist?
Seltsame Eigenart. Ich kann nur daran denken, Programmierer zu zwingen, die den Funktionsnamen mit einem Großbuchstaben I (Auge) statt einem Kleinbuchstaben l (Ell) buchstabieren, um in der .h Datei zu suchen :) –
#define STRSAFE_LOCALE_FUNCTIONS hat den Trick gemacht. Vielen Dank. Ich habe keine Ahnung wie ich die fehlende Definition vermisst habe. –
Nicht streng verwandt, aber trotzdem gut zu wissen: * "Sie können' STRSAFE_NO_CB_FUNCTIONS' oder 'STRSAFE_NO_CCH_FUNCTIONS' definieren, aber nicht beides." * (Aus [Über Strsafe.h] (https://msdn.microsoft.com/de) -us/library/windows/desktop/ms647466.aspx)). Nicht wirklich eine Überraschung, aber manchmal ist es schön, das Offensichtliche explizit zu formulieren. – IInspectable