Я пишу настольное приложение C++ для Windows 7 и более поздних версий.
Я хочу, чтобы получить путь к папке AppData/Roaming папки, поэтому я использую SHGetKnownFolderPath:Целевое назначение рабочего стола Windows 7: идентификатор «SHGetKnownFolderPath» не определен
#include "stdafx.h"
#include <windows.h>
#include <ShlObj.h>
void hello()
{
LPWSTR roamingPath;
SHGetKnownFolderPath(FOLDERID_RoamingAppData, 0, NULL, &roamingPath);
ПРОБЛЕМА: Сложения терпит неудачу с identifier "SHGetKnownFolderPath" is undefined
, что странно, как я думаю, что я включил правильные заголовки.
Примечания:
- Visual Studio 2015 говорит мне, что мои варианты компиляции являются
/Yu"stdafx.h" /GS /analyze- /W3 /Zc:wchar_t /ZI /Gm /Od /Fd"Debug\vc140.pdb" /Zc:inline /fp:precise /D "WIN32" /D "_WINDOWS" /D "_DEBUG" /D "_USRDLL" /D "_WINDLL" /D "_MBCS" /errorReport:prompt /WX- /Zc:forScope /RTC1 /Gd /Oy- /MDd /Fa"Debug\" /EHsc /nologo /Fo"Debug\" /Fp"Debug\OverlayIcon.pch"
. - В отличие от Error: identifier :"SHGetKnownFolderPath" is unidentified, где проблема заключается в том, что запрашивающая сторона больше, чем на рабочем столе.
Ваши [целевые платформы-макросы] (https://msdn.microsoft.com/en-us/library/6sehtctf.aspx) в заголовке stdafx.h, вероятно, будут важны для этого вопроса, так как их значения укажите, какие функции отображаются при компиляции через заголовки. Может захотеть включить их в ваш вопрос. – WhozCraig
@WhozCraig: Добавлено! Проблема синтаксиса StackOverflow: -/ –
Поскольку он сидит сейчас после обновления вашего сообщения, он должен хотя бы скомпилировать источник. У вас есть этот заголовок stdafx.h в вашем проекте. Существует мало смысла не просто менять ценности на правильные цели прямо там, так как он включен во все ваши единицы перевода в любом случае. – WhozCraig