从VS 2005迁移到VS 2012时错误的windows.h

时间:2013-06-20 11:30:51

标签: visual-studio-2012 visual-studio-2005 winapi

我有一堆VS C ++ 2005桌面应用程序。我们正在将其中一些迁移到VS 2012.我们打算在2005年留下一些遗留应用程序。所以我们希望这两个应用程序并排构建,一个在VS 2012中,另一个在VS 2005中。

我的VS 2012项目遇到问题,包括VS 2012中的错误Windows.h。我的迁移项目得到了错误的包含。我认为这是项目特定的,但如果我只是在VS 2012新项目向导中创建一个defaut MFC项目,它将得到错误的Windows.H。这只是一个纯粹由VS 2012生成的股票项目。它应该只是开箱即用。

如何获得正确的windows.h?如何保持在同一台机器上并排构建VS 2005和VS 2012的能力。

以下是错误消息

1> ------ Rebuild All started:Project:includeWinH,Configuration:Debug Win32 ------ 1 GT; stdafx.cpp 1> c:\ program files(x86)\ microsoft visual studio 8 \ vc \ platformsdk \ include \ specstrings.h(491):警告C4005:'_ ecount':宏重新定义 1 GT; c:\ program files(x86)\ microsoft visual studio 11.0 \ vc \ include \ sal.h(2651):参见先前对' _ecount'的定义 1> c:\ program files(x86)\ microsoft visual studio 8 \ vc \ platformsdk \ include \ specstrings.h(492):警告C4005:'_ bcount':宏重新定义 1 GT; c:\ program files(x86)\ microsoft visual studio 11.0 \ _vc \ include \ sal.h(2652):参见先前对' _bcount'的定义

2 个答案:

答案 0 :(得分:1)

在安装和迁移过程中,VS2012在VS 2005的某些设置中复制了一些。 修复是在VS 2012

Open Property Manager
Open Microfoft.Cpp.Win32.user right click menu 'Properties'
edit Common Properties->VC++ Directories->Include Directories
remove the stale references to VS2005 dir. 

答案 1 :(得分:0)

Microsoft从Visual Studio设置中删除了库/ include目录设置,并鼓励用户改为使用属性表。

但是,他们还引入了一个名为Microsoft.Cpp.Win32.user的“秘密”属性表,该表已添加到Visual Studio 2012中的每个项目中,甚至是未从旧版Visual Studio迁移的新项目。如果以前在计算机上安装了Visual Studio 2008或更早版本,则此属性表包含旧版Visual Studio的库/包目录设置。

基本上,Microsoft.Cpp.Win32.user与旧的库/包含目录设置相同,除了它更难找到。

我会推荐以下内容:

  • 将此文件中的所有设置恢复为默认值,特别是对旧Windows /平台SDK的陈旧引用

  • 从每个项目的每个配置中删除此属性表,这样就不会在其他人的计算机上造成问题

更多信息:http://msdn.microsoft.com/en-us/library/669zx6zc.aspx