VS2003升级VS2010修改

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。若能找得到的话,直接修改那个可能是更对的做法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/466131.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux poll

Linux poll poll提供的功能与select类似&#xff0c;不过在处理流设备时&#xff0c;它能够提供额外的信息。 1、函数原型#include <poll.h>int poll(struct pollfd fd[], nfds_t nfds, int timeout);2、函数参数&#xff1a;&#xff08;1&#xff09;fd&#xff1a;一个…

SQL Server表分区-水平分区

SQL Server表分区&#xff0c;sql server水平分区 转自&#xff1a;http://www.cnblogs.com/knowledgesea/p/3696912.html 根据时间的&#xff0c;直接上T-SQL代码的水平分区&#xff1a;https://www.xuebuyuan.com/1817312.html?tdsourcetags_pcqq_aiomsg什么是表分区 一般情…

jQuery1.3.2 源码学习 -2 两个重要的正则表达式

32 // Is it a simple selector 33 isSimple /^.[^:#\[\.,]*$/ / / 表示这是正则表达式 ^ 表示开始部分 $ 表示结束部分 . 匹配除了 \n 之外的任何字符 [^character_group] 表示不在字符集合中 [^:#\[\.,] 表示除了冒号 (:), #, 前中括号([), 句号(.) 和逗号(,)之外的任何一个…

基于STC89C52的韦根数据接收

韦根是一种开放的通讯协议&#xff0c;具体官方介绍如下&#xff1a;Wiegand协议是国际上统一的标准&#xff0c;有很多格式&#xff0c;标准的26-bit 应该是最常用的格式。此外&#xff0c;还有34-bit 、37-bit 等格式。格式的含义如下&#xff1a;当给出这一串数字&#xff0…

头文件介绍

头文件介绍 axftmp1.h 是收集类模板(MFC模板类)的头文件&#xff0c;倘若你在程序中用到了CArray, CObList等数据结构时&#xff0c;那么就得加载该文件。通常在MFC编程中&#xff0c;为了使用集合、数组类&#xff0c;要在StdAfx.h中加入下面语句&#xff1a;#include <afx…

超乎想象,数据揭示自学成才的码农为何备受青睐

你是否想成为一个 Web 开发者&#xff0c;但却不知道从哪里开始&#xff1f; 你是否对学习编程语言的大量建议和繁琐细节感到审美疲劳&#xff1f; 你是否不确定需要遵循哪条路才能成为一个自信而又足智多谋的开发者&#xff1f; 如果你的回答是肯定的&#xff0c;那么不要担心…

Linux epoll

Linux epoll事件触发一、什么是epollepoll是什么&#xff1f;按照man手册的说法&#xff1a;是为处理大批量句柄而作了改进的poll。当然&#xff0c;这不是2.6内核才有的&#xff0c;它是在2.5.44内核中被引进的(epoll(4) is a new API introduced in Linuxkernel 2.5.44)&…

Cisco 3层交换HSRP

现在3层交换机上:先把每一台交换机的vlan的ip配好在进入vlan (n)下在配<一>热备份的ip<二>配优先级(standby 加是第几组如1 priority 加优先级 如200)<三>占先权(standby 1 preempt)配置如下:假如你是vlan1ip routinginterface vlan 1standby 1 ip 192.168.1…

Linux下的图形库curses写贪吃蛇,酷

最近看到大神在Linux下写的贪吃蛇代码&#xff0c;用到了curses图形库&#xff0c;可能很多人都没有用过&#xff0c;分享出来给大家。在ubuntu下安装curses图形库命令sudo apt-get install libncurses5-dev双buff是一个非常优秀的机制&#xff0c;之前写贪吃蛇的时候&#xff…

BUG笔记

1.无法打开lib 你这个 error LNK1104是链接时的错误&#xff0c;应该是需要此库&#xff0c;没办法忽略 找到此库 并在Properties->Linker->Input->Additional Depenncidees里加入库名 在Properties->Linker->General->Additional Library Directories里加入…

STM32f103C8T6 bootloader设计

STM32 bootloader设计 使用的是STM32f103C8T6&#xff1a;64Kflash&#xff0c;在应用程序中通过CAN把接受到的bin写到外置 flash的指定地址处。在bootloader中判断一个单独的标志位看程序是否需要升级&#xff0c;如果需要升级&#xff0c;则复制外置flash处的内容到STM32的内…

初中变成了菜园子了!

我家在四川省射洪县天仙镇凤鸣场&#xff0c;属于四川盆地山区&#xff0c;在四川中部&#xff0c;发源于川北羌塘群山的涪&#xff08;fu&#xff09;江流经射洪县城。天仙镇原名天仙寺&#xff0c;附近很多乡镇都是奇怪的名字&#xff1a;大庙、双庙、佛照、玉贞观。我怀疑这…

单片机数字滤波算法如何实现?(附代码)

ID&#xff1a;技术让梦想更伟大整理&#xff1a;李肖遥单片机主要作用是控制外围的器件&#xff0c;并实现一定的通信和数据处理。但在某些特定场合&#xff0c;不可避免地要用到数学运算&#xff0c;尽管单片机并不擅长实现算法和进行复杂的运算。下面主要是介绍如何用单片机…

VS2010,C++ 制作静态库(*.lib),并使用

VS2010,C 制作静态库(*.lib)&#xff0c;并使用 原文链接&#xff1a;https://blog.csdn.net/qq_41472037/article/details/100001322 简单来说&#xff0c;就是建立两个项目:① Win32 Project &#xff08;Win32 项目&#xff09;&#xff1a; 接口文件.h 和 实现接口文件.cp…

STM32f103——ILI9341

STM32f103 —— ILI9341 #ifndef ILI9341_H_ #define ILI9341_H_#include "type.h"//TFT ILI9341 #define ILI9341_SPI SPI1#define ILI9341_MOSI_GRP GPIOA #define ILI9341_MOSI_IDX GPIO_Pin_7 #define ILI9341_MOSI_LOW() GPIO_ResetBits(ILI…

利用云计算打造政务信息化及应急指挥云平台

本文转载自星光云http://www.365yun.top/news/list.asp?newsid24云计算平台提供最全面的、集成度最高的开放平台&#xff0c;构建和管理面向运营、运维、用户服务的云数据中心管理平台&#xff1b;需集成计算、存储、网络、安全及管理&#xff0c;能够提供满足从基础设施到应用…

《网络规划设计师考试大纲》、《网络规划设计师教程》和《系统架构设计师教程》...

《网络规划设计师考试大纲》、《网络规划设计师教程》和《系统架构设计师教程》即将与广大考生见面2009年下半年即将开考的系统架构设计师和网络规划设计师两个科目&#xff0c;是自2005年上半年以来首次增加的计算机资格考试高级资格考试&#xff0c;即自2004年以来&#xff0…

项目实战,平均负载过高,最后发现却是这个搞鬼

1.前言最近在项目上遇到负载均衡过高的问题&#xff0c;分析好几天&#xff0c;还因此移植了一个CPU检测工具&#xff0c;后面在小二哥的指导找到了问题原因&#xff0c;小二哥有些读者应该会比较熟悉&#xff0c;之前发的微信滑动卡顿就是他分析的&#xff0c;他是一个非常厉害…

虚拟机压缩

virtualbox虚拟机运行久了之后就会发现&#xff0c;磁盘镜像vdi文件越来越大。即使你把虚拟机中的大文件删除&#xff0c;这个vdi文件占用的空间还是不变。也就是说动态扩展的vdi文件只会大&#xff0c;不会小。那么大的文件对于备份和分享都不是很方便&#xff0c;所以有必要的…

checkbox保存和赋值

//货物信息中的表格内容 $.each(trG.find(td input,td select),function(i,inp){if($(inp).attr(type)checkbox){if($(inp).is(:checked)){objG[$(inp).attr(name)]1;}else{objG[$(inp).attr(name)]0;}}else{objG[$(inp).attr(name)]$(inp).val();} }) $.each($(b).find(tr:las…