1

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

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

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

这是错误消息

1>----- 重建所有已启动:项目:includeWinH,配置:调试 Win32 ------ 1> stdafx.cpp 1>c:\program files (x86)\microsoft visual studio 8\vc\platformsdk \include\specstrings.h(491): 警告 C4005: '_ ecount' : 宏重新定义 1> 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> c:\program 文件(x86)\microsoft visual studio 11.0\vc\include\sal.h(2652) :参见“ _bcount”的先前定义

4

2 回答 2

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. 
于 2013-06-20T15:12:27.517 回答
0

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

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

基本上,Microsoft.Cpp.Win32.user与旧的 library/include 目录设置相同,只是更难找到。

我会推荐以下内容:

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

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

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

于 2014-08-18T08:55:46.647 回答