我正在尝试将我们的项目从 VS2005 转移到 VS2008,并且在 MFC 项目上遇到此构建错误:
C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\winnt.h(236) : error C2146: syntax error : missing ';' before identifier 'PVOID64'
我认为这是 SDK 问题或包含目录排序问题,正如一些论坛所建议的那样,但这似乎不是问题。有没有人见过这个?当我试图追踪这个问题时,我应该寻找什么?
我还想知道是否需要增加项目 stdafx 中的 WINVER 预处理器标志。他们已经很老了:
#ifndef WINVER
#define WINVER 0x0500
#endif
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0500
#endif
#ifndef _WIN32_WINDOWS
#define _WIN32_WINDOWS 0x0510
#endif
#ifndef _WIN32_IE
#define _WIN32_IE 0x0500
#endif
Thanks
这只发生在包含 DirectShow 包含文件的项目中。问题在于,Basetsd.h 是 DirectShow SDK 的一部分,它先于 Windows SDK 的 Basetsd.h 被包含。 DirectShow 版本没有定义 POINTER_64 (因为它很旧),然后导致了我报告的问题。
解决方案是在有问题的项目的添加包含设置中将包含目录添加到 SDK 中。如:
"$(WindowsSdkDir)\include"
这种情况是在我从 VS2005 升级到 VS2008 后开始发生的,因为之前 SDK include 指令的给出方式如下:
"$(VCInstallDir)PlatformSDK\include"
VS2008中不再是平台SDK的位置
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)