我正在使用DirectX 9 On Vs 2008 / windows7进行示例。 我收到了错误。
1> ------ Build build:Project:VideoCapture,配置:调试Unicode Win32 ------ 1 GT;编译...
1> VideoCaptureDlg.cpp
1>。\ VideoCaptureDlg.cpp(169):错误C2065:'SHGFP_TYPE_CURRENT':未声明的标识符
1>。\ VideoCaptureDlg.cpp(169):错误C3861:'SHGetFolderPath':未找到标识符
1>。\ VideoCaptureDlg.cpp(173):错误C2065:'SHGFP_TYPE_CURRENT':未声明的标识符
1>。\ VideoCaptureDlg.cpp(173):错误C3861:'SHGetFolderPath':未找到标识符
1>。\ VideoCaptureDlg.cpp(1025):警告C4244:'参数':从'int'转换为'WORD',可能丢失数据
1>。\ VideoCaptureDlg.cpp(1180):错误C2065:'SHGFP_TYPE_CURRENT':未声明的标识符
1>。\ VideoCaptureDlg.cpp(1180):错误C3861:'SHGetFolderPath':未找到标识符
1>。\ VideoCaptureDlg.cpp(1184):错误C2065:'SHGFP_TYPE_CURRENT':未声明的标识符
1>。\ VideoCaptureDlg.cpp(1184):错误C3861:'SHGetFolderPath':未找到标识符
我已经添加了shlobj.h和shell32.lib,但它仍然显示相同的错误。
我尝试在基于Windows 7和Internet Explorer 8的stdafx.h文件中更改以下宏的值,但它显示冲突“C1189:#error:_WIN32_WINNT设置与_WIN32_IE设置冲突”
//有关不同平台的相应值的最新信息,请参阅MSDN。
#ifndef WINVER // Allow use of features specific to Windows XP or later.
#define WINVER 0x0501 // Change this to the appropriate value to target other versions of Windows.
#endif
#ifndef _WIN32_WINNT // Allow use of features specific to Windows XP or later.
#define _WIN32_WINNT 0x0601 // Change this to the appropriate value to target other versions of Windows.
#endif
#ifndef _WIN32_WINDOWS // Allow use of features specific to Windows 98 or later.
#define _WIN32_WINDOWS 0x0410 // Change this to the appropriate value to target Windows Me or later.
#endif
#ifndef _WIN32_IE // Allow use of features specific to IE 6.0 or later.
#define _WIN32_IE 0x0800 // Change this to the appropriate value to target other versions of IE.
#endif
对此问题的任何建议都会有所帮助。
答案 0 :(得分:2)
来自MSDN的代码块或您的stdafx.h
?我只是设置宏而没有与条件混乱(你想要覆盖以前的设置)。还要确保在任何包含之前设置它们(尤其是windows.h
)。
查看错误消息的来源(sdkddkver.h
的第263行):
#if ((_WIN32_WINNT < _WIN32_WINNT_WIN2K) && (_WIN32_IE > _WIN32_IE_IE60SP1))
#error _WIN32_WINNT settings conflicts with _WIN32_IE setting
#endif
你不以你认为的方式设置这些宏。
编辑(根据评论):
我启动我的stdafx.h
文件(并确保总是第一个标头;这也是有效的预编译标头所必需的):
#define WINVER 0x0601 // Kernel 6.1 == Windows 7/Server 2008 R2
#define _WIN32_WINNT WINVER
#define _WIN32_IE 0x0800 // IE8
#define NOMINMAX // Don't define min and max (prefer C++ lib)
答案 1 :(得分:0)
问题解决了这个问题。 我刚刚更改了项目属性下的预处理器设置 - &gt; C ++ - &GT;
在它之前 _WINDOWS; WINVER =的0x0400; DEBUG; _DEBUG; _WIN32_WINNT = 0x400的; WIN32; UNICODE
我把它改成了 _WINDOWS; WINVER =为0x0600; DEBUG; _DEBUG; _WIN32_WINNT = 0x600; WIN32; UNICODE