我正在为Windows 7及更高版本编写一个C ++桌面应用程序 我想获取AppData / Roaming文件夹的路径,因此我使用SHGetKnownFolderPath:
#include "stdafx.h"
#include <windows.h>
#include <ShlObj.h>
void hello()
{
LPWSTR roamingPath;
SHGetKnownFolderPath(FOLDERID_RoamingAppData, 0, NULL, &roamingPath);
问题:使用identifier "SHGetKnownFolderPath" is undefined
构建失败,这很奇怪,因为我认为我包含了正确的标题。
注意:
/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"
。 答案 0 :(得分:1)
诀窍是在stdafx.h
文件中添加这两行:
#define WINVER 0x0601 // Allow use of features specific to Windows 7 or later.
#define _WIN32_WINNT 0x0601
这表示应用程序的目标是Windows 7,这很重要,因为SHGetKnownFolderPath只能从Windows Vista中获得,如MSDN documentation中所述。它不能立即为我工作,我不得不清理,甚至重新启动Visual Studio。
以下是所有其他Windows版本的代码:
https://msdn.microsoft.com/en-us/library/6sehtctf.aspx
感谢WhozCraig的提示!