gpt4 book ai didi

c++ - 针对 Windows 7 桌面 : identifier "SHGetKnownFolderPath" is undefined

转载 作者:行者123 更新时间:2023-11-28 05:47:53 24 4
gpt4 key购买 nike

我正在为 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,这很奇怪,因为我认为我包含了正确的 header 。


注释:

  • 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 "_D​​EBUG"/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问题在于提问者的目标不仅仅是桌面。

最佳答案

诀窍是在您的 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 的提示!

关于c++ - 针对 Windows 7 桌面 : identifier "SHGetKnownFolderPath" is undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35858714/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com