gpt4 book ai didi

未识别 C++ Windows 跳转列表类

转载 作者:行者123 更新时间:2023-11-28 06:31:43 25 4
gpt4 key购买 nike

尝试使用 Visual Studio 2008 构建软电话源(microsip),但未识别 ​​Windows 跳转列表类。

第 19 行出错,因为 ICustomDestinationList 未被识别

c:\users\gremblin\downloads\microsip-3.9.2-src\microsip-3.9.2-src\jumplist.h(19)
: error C2143: syntax error : missing ';' before '*'


1. #ifndef jumplist_h__
2. #define jumplist_h__
3.
4. #include <string>
5. #include <shobjidl.h>
6. #include <propkey.h>
7. #include <propvarutil.h>
8.
9. class JumpList
10. {
11. public:
12. JumpList(std::wstring AppID);
13. ~JumpList();
14. bool DeleteJumpList();
15. void AddTasks();
16.
17. private:
18. HRESULT _CreateShellLink(PCWSTR pszArguments, PCWSTR pszTitle, IShellLinkW **ppsl, int iconindex = -1);
19. ICustomDestinationList *pcdl;
20. };

#endif // jumplist_h__

我错过了什么吗?据我所知jumplist函数都在"shobjidl.h"

最佳答案

shobjidl.h 只在NTDDI_VERSION >= NTDDI_WIN7 时才定义ICustomDestinationList,所以如果NTDDI_VERSION 编译器会报错未设置为 Windows 7 或更高版本。

NTDDI_VERSION默认定义在sdkddkver.h中:

#define NTDDI_VERSION_FROM_WIN32_WINNT2(ver)    ver##0000
#define NTDDI_VERSION_FROM_WIN32_WINNT(ver) NTDDI_VERSION_FROM_WIN32_WINNT2(ver)

...

#if !defined(_WIN32_WINNT) && !defined(_CHICAGO_)
#define _WIN32_WINNT 0x0601
#endif

#ifndef NTDDI_VERSION
#ifdef _WIN32_WINNT
// set NTDDI_VERSION based on _WIN32_WINNT
#define NTDDI_VERSION NTDDI_VERSION_FROM_WIN32_WINNT(_WIN32_WINNT)
#else
#define NTDDI_VERSION 0x06010000
#endif
#endif

因此,要么在项目中自己定义 NTDDI_VERSION,要么将 _WIN32_WINNT 定义为适当的值并让它传播到 NTDDI_VERSION

请参阅 MSDN 以了解 _WIN32_WINNTNTDDI_VERSION 的关系:

Using Windows Headers

关于未识别 C++ Windows 跳转列表类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27412405/

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