vs2003工程转 VS2010

vs2003使用的了很多年,的确很好用,内存耗费少,启动速度快,真不舍得丢弃,但是win7之后经常在调试的时候出现pdb文件被锁定无法重新生成的问题,网上也有一些招数处理,但都不是最好的。没办法了只能升级为vs2010了。当然这是我的解决电脑的性能问题,因为vs2010非常耗内存的,行,给它8G吧,win7 64位,一切都ok了。但是原来的vs2003的工程文件升级为vs2010后并不是像微软讲的那么容易就可以用了。常常需要新建一个vs2010的工程,把原来的代码文件一个个的添加进去。我总结一个办法,可以更快的解决。

 

  一般我们用vs2010打开一个111.vcproj文件,它会出来转换向导提示,我们根据提示自动转换为2010项目之后,马上编译,提示问题:

1>  stdafx.cpp
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winnt.h(290): error C2146: 语法错误: 缺少“;”(在标识符“PVOID64”的前面)
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winnt.h(290): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winnt.h(8992): error C2146: 语法错误: 缺少“;”(在标识符“Buffer”的前面)

 

其实类似的问题,很多人都问过,但回答都不太正统,有些甚至建议直接修改winnt.h文件(太横了!)。

 

我发现其实这就是一个头文件包含的问题,我们用vs2010去新建一个项目的时候,大家有没有发现,对比用vs2003来新建一个文件,目录里面会多了一个targetver.h的头文件。这就是关键了。通过对比vs2010新项目里面的stdafx.h和vs2003里面的stdafx.h文件,可以看出原来什么WINVER等的定义,到了vs2010里面都用了#include "targetver.h"来代替。

 

那我们也参考着这么做呗,修改原来的stdafx.h,注销掉原来系统宏定义的一大段,直接用#include "targetver.h"来代替。再次用vs2010编译,一切都ok了。。。

 

贴上,修改后的stdafx.h文件

// stdafx.h : 标准系统包含文件的包含文件, // 或是经常使用但不常更改的 // 项目特定的包含文件

#pragma once

#ifndef _SECURE_ATL #define _SECURE_ATL 1 #endif

#ifndef VC_EXTRALEAN #define VC_EXTRALEAN  // 从 Windows 标头中排除不常使用的资料 #endif

/* // 如果您必须使用下列所指定的平台之前的平台,则修改下面的定义。 // 有关不同平台的相应值的最新信息,请参考 MSDN。 #ifndef WINVER    // 允许使用 Windows 95 和 Windows NT 4 或更高版本的特定功能。 #define WINVER 0x0501  //为 Windows98 和 Windows 2000 及更新版本改变为适当的值。 #endif

#ifndef _WIN32_WINNT  // 允许使用 Windows NT 4 或更高版本的特定功能。 #define _WIN32_WINNT 0x0501  //为 Windows98 和 Windows 2000 及更新版本改变为适当的值。 #endif      

#ifndef _WIN32_WINDOWS  // 允许使用 Windows 98 或更高版本的特定功能。 #define _WIN32_WINDOWS 0x0501 //为 Windows Me 及更新版本改变为适当的值。 #endif

#ifndef _WIN32_IE   // 允许使用 IE 4.0 或更高版本的特定功能。 #define _WIN32_IE 0x0500 //为 IE 5.0 及更新版本改变为适当的值。 #endif */

#include "targetver.h"

#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // 某些 CString 构造函数将是显式的

// 关闭 MFC 对某些常见但经常被安全忽略的警告消息的隐藏 #define _AFX_ALL_WARNINGS

#include <afxwin.h>         // MFC 核心和标准组件 #include <afxext.h>         // MFC 扩展 #include <afxdisp.h>        // MFC 自动化类

#include <afxdtctl.h>  // Internet Explorer 4 公共控件的 MFC 支持 #ifndef _AFX_NO_AFXCMN_SUPPORT #include <afxcmn.h>   // Windows 公共控件的 MFC 支持 #endif // _AFX_NO_AFXCMN_SUPPORT

#include <afxsock.h>  // MFC 套接字扩展 #include <winsock2.h> #include <iphlpapi.h>

 

你可能感兴趣的:(vs2003工程转 VS2010)