Visual studio 2008 在安装VS2008之后,我在winnt.h中得到一个编译错误
我正试图将我们的项目从VS2005转移到VS2008,并且在MFC项目上遇到了以下生成错误:Visual studio 2008 在安装VS2008之后,我在winnt.h中得到一个编译错误,visual-studio-2008,mfc,Visual Studio 2008,Mfc,我正试图将我们的项目从VS2005转移到VS2008,并且在MFC项目上遇到了以下生成错误: C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\winnt.h(236) : error C2146: syntax error : missing ';' before identifier 'PVOID64' 我认为这是一个SDK问题或一些论坛建议的包含目录排序问题,但这似乎不是问题所在。以前有人见过这个吗?当我试图追查这件事时,我应该寻
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
谢谢您应该尝试从stdafx.h中删除这些WINVER宏。这些版本(5.0和5.1)早于Win64,因此它们可能没有PVOID64的声明。这只发生在包含DirectShow包含文件的项目中。问题在于,在包含Windows SDK的Basetsd.h之前,存在一个作为DirectShow SDK一部分的Basetsd.h。DirectShow版本没有定义指针_64(因为它很旧),因此导致了我报告的问题 解决方案是在有问题的项目的addition includes设置中将include目录添加到SDK中。例如:
"$(WindowsSdkDir)\include"
这是在我从VS2005升级到VS2008后开始的,因为之前,SDK include指令的给出方式如下:
"$(VCInstallDir)PlatformSDK\include"
它不再是VS2008中平台SDK的位置我在用VS2005安装VS2012RC(而不是问题的VS2008)后遇到了这个问题。卡里姆在这个问题上的回答基本上是正确的,但他的解决方案对我不起作用。幸运的是,这里的其他同事已经解决了这个问题 问题似乎是VS安装程序找到了DirectX9 SDK,并将其放在其每用户目录“属性”文件中。因此,对我们有效的修复方法是编辑用户的目录属性文件(使用文本编辑器),删除对“dx90sdk”目录的所有引用,然后重新加载Visual Studio 相关文件似乎存储在:
%USERPROFILE%\appdata\local\microsoft\msbuild\v4.0\Microsoft.Cpp.Win32.user.props
这个修正也很可能适用于Karim的情况,允许他避免使用额外的
#include
预处理器语句。我在使用DirectShow和VS2008时也遇到同样的问题。但不幸的是,您的解决方案对我的情况没有帮助,即使我安装了更新的MS SDK版本6.0、7.0。有什么建议吗?