Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2008 在安装VS2008之后,我在winnt.h中得到一个编译错误_Visual Studio 2008_Mfc - Fatal编程技术网

Visual studio 2008 在安装VS2008之后,我在winnt.h中得到一个编译错误

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问题或一些论坛建议的包含目录排序问题,但这似乎不是问题所在。以前有人见过这个吗?当我试图追查这件事时,我应该寻

我正试图将我们的项目从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

谢谢

您应该尝试从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。有什么建议吗?