BUG1:
fatal error C1189: #error: MFC does not support WINVER less than 0x0601. Ple

在StdAfx.h中把#define WINVER 0X0500 //为 Windows98 和 Windows 2000 及更新版本改变为适当的值。

改为:
#define _WIN32_WINNT 0x0601

BUG2:
https://www.cnblogs.com/slowtech/p/5216120.html
vs2003工程转 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>

BUG3:
错误 1 error C1083: 无法打开包括文件:“targetver.h”: No such file or directory d:\1mysmjs\分控\2010code\code\boatctrl\specctrl\stdafx.h 33

复制targetver.h文件到现在的项目文件夹目录下面

BUG4:
LINK : fatal error LNK1104: 无法打开文件“mfc71.lib”的原因又一例
[环境]
Windows XP OS;
Visual Studio 2008;
本来是vs2003开发的工程,迁移至vs2008后出错。

[分析]
mfc71.lib是vs2003所使用的MFC类库;虽然我的机器中同时安装有vs2003和2008两个版本,不过由于我的vs2008的类库查找PATH中找不到mfc71.lib而报的错。更进一步地说,vs2008的类库查找PATH中本来就不应该找到mfc71.lib,而是应该使用它所对应的mfc90.lib。

[对策]
打开工程属性, Linker > Input > Ignore Specific Libraries(忽略特定库)中输入 mfc71.lib;mfcs71.lib,重新编译即可。

对应.vcproj文件中选项为:IgnoreDefaultLibraryNames=“mfc71.lib;mfcs71.lib”

[后记]
并不是每个迁移的工程都会报如上的错。目前尚不清楚,迁移后的工程哪个设定使得vs2008一定去找旧的mfc。若能找得到的话,直接修改那个可能是更对的做法。

VS2003升级VS2010修改相关推荐

  1. VS2003转VS2010 fatal error C1189: #error

    我自己的mfc的demo要转换编译环境出现以下编译错误: VS2010编译错误:fatal error C1189: #error : This file requires _WIN32_WINNT ...

  2. 关于cm5forG1的升级脚本修改

    因为cm5里的app2sd功能有变化,之前定制教程里的data文件夹该怎么写 给大家参考一下: show_progress(0.2, 10); ui_print("copy data&quo ...

  3. VS2010 修改输出的exe名字和pdb文件名字的方法

    -------------------------------------- 创建人:Ruo_Xiao 邮箱:xclsoftware@163.com ------------------------- ...

  4. VS2010 修改模板文件,增加默认注释

    其实这篇文章是从网上转载的,但是找不到转载链接,只能自己复制过来了 vs中的///文档注释类似java中/** */文档注释.能自动的生成帮助文档. 如果我想在每次创建文件时,自动生成文档注释(注意是 ...

  5. 服务器正在升级无法修改个性签名,原神无法改名字和修改签名解决方法

    原神改名字的入口关闭了,玩家们暂时无法改名字和修改签名,有不少玩家想要知道为什么会这样,想要改名字应该怎么办,具体的原因和问题的解决方法接下来会给大家分享,玩家们也可以多看看下方的问题分析. 原神无法 ...

  6. vs2010修改exe程序的生成路径

    一般而言,vs项目生成的文件在项目文件夹下的Debug或Release下. 现在需求如下: 生成的文件(exe或dll文件)存入项目文件夹下的bin(自定义文件夹). 解决方案: 右键项目,选中菜单属 ...

  7. OpenCV再升级!修改一行代码,将图像匹配效果提升14%!

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转载自:AI公园 作者:Iago Suárez 编译:rongh ...

  8. 关于.net项目从vs2003升级到2005的若干问题

    本人刚学习VS2.0,诸多问题,请勿见笑. 1.项目从2003转换成2005版本:用VS2005直接打开项目文件就会自动转换,注意保存备份,不然转换失败还可以恢复. 2.似乎2005中.cs文件里控件 ...

  9. android 升级数据库 修改表结构

    本来很简单的事情 后出现了小问题 浪费了不少时间确实不该 package com.ndialog.db;import android.content.Context; import android.d ...

最新文章

  1. 机房收费系统总结【3】-数据库细节
  2. 递归下降分析法--算数语法分析
  3. C++知识点52——多重继承
  4. python的x 2是什么意思_python中startx是什么意思
  5. 网站性能调优开发工具: Lighthouse, Puppeteer 以及进阶部分丨 Google 开发者大会 2018...
  6. EShop网上商城项目(一)
  7. Delphi XE 10.2.3使用CEF4Delphi取网页元素时碰到nbsp;变问号?的处理
  8. 项目成本管理:制订项目成本管理计划
  9. 【算法竞赛学习】资金流入流出预测-挑战Baseline_数据探索与分析1
  10. 使用openvswitch网桥连接不同的network namespace
  11. 京东商城java笔试_京东java笔试
  12. 如何混淆.NET 程序集与 ConfuserEx
  13. 基于单片机的红外检测及语音响应系统
  14. 中国电科发布新型智慧城市顶层设计
  15. sort和sorted的区别
  16. css3做一个牛顿摆
  17. 测试用例——微信发红包
  18. mysql如何使用多核cpu_利用多核 CPU 实现并行计算
  19. UVALive - 4394 (区间dp)
  20. squirrelmail 小松鼠的安装和配置

热门文章

  1. 医学影像PACS系统解决方案与成功案例汇总
  2. Diango博客--2.博客从“裸奔”到“有皮肤”
  3. Python 之 线程
  4. mybatis 添加语句返回对象_mybatis的insert语句插入数据时的返回值的实现
  5. 链表(Linked List)之双向链表
  6. qt android glsl,基于Qt的OpenGL学习(1)—— Hello Triangle
  7. springmvc视图解析器_SpringMVC视图及REST风格
  8. DES的原理及python实现
  9. 小米 android 8,小米华为们谁最良心?10大手机厂商安卓8.0升级情况盘点
  10. 网络层核心:路由和路由生成算法