代码从VS2003升级到VS2005的编译链接问题及解决方法

VS老项目迁移指南:如何用最新VS2022编译VC6到VS2008的遗留代码 本文提供了在Visual Studio 2022中编译VC6到VS2008等遗留代码的完整迁移指南。核心在于理解并使用正确的平台工具集,例如通过Daffodil工具集成V60到V90等旧版工具集。文章详细介绍了环境配置、项目升级、属性设置以及解决常见编译链接错误的实战步骤,帮助开发者在不重写代码的前提下,于现代IDE中维护历史项目。 阅读详情

 

最近做了一个代码从VS2003升级到VS2005的工作,出现了不少问题,在参考了一些网上的资料和朋友的帮助后,再加上自己的分析调查,到目前为止出现的问题都解决了。由于发现网上这方面的资料似乎比较零散,为了使同样要做VS2003(或VC6)程序向VS2005(或VS2008)转化的朋友能够少走一点弯路,整理如下,也欢迎各位网友提出宝贵意见或建议。(注意:由于VC6和VS2003比较贴近,VS2005和VS2008比较贴近,大多数问题及对策,也适用于VC6->VS2005/VS2008的升级)

 

1          常见的编译错误

1.1         定义变量的作用域问题,在VS2005下可能会报一种变量没有定义的错误,比如:

在VS2003下,如下猪头代码竟然能编译通过的,

for(int i=0;i<100;i++)

{

           ……

}

for(i=0;i<100;i++)

{

           ……

}

在VS2005则会报错,解决方法相信各位都会,不赘述。

1.2         在V2003下,函数的返回值类型或变量类型可以缺省(为int),在VS2005下,则必须明确定义。

1.3         VS2005下,MFC消息处理函数,例如ON_WM_NCHITTEST的返回值需要由UINT改成LRESULT

1.4         无参数的函数调用,V2003下可以不带括号,V2005下需要带上括号;

1.5         V2005下, STL迭代器不能赋值为NULL,也不能和NULL做比较,因为STL已经不能有NULL迭代器这么一说了。(关于迭代器的其他问题,以后还会进行特别说明)

1.6         V2003下,结构体的默认运算符==或者<之类的如果不实现也可以作为STL元素放入list等容器中。但在V2005下不行了,因为它已经不再为结构体生成缺省的操作符函数。

2          常见的链接错误

2.1         症状:VS2005下,显示fatal error LNK1104: 无法打开文件“LIBC.lib”

对策:项目->属性中->配置属性->链接器->输入->在忽略特定库中写入打不开的文件的名称LIBC.lib。

2.2         症状:VS2005下,显示MSVCRTD.lib(MSVCR90D.dll) : error LNK2005

对策:项目->属性中->配置属性->链接器->输入->在忽略特定库中写入MSVCRTD.lib(for Debug)/ MSVCRT.lib(for Release)。

2.3         症状:unresolved external symbol __iob

对策:在.cpp(如:stdafx.cpp)文件中追加extern "C" { FILE _iob[3] = {__iob_func()[0], __iob_func()[1], __iob_func()[2]}; }

2.4         VS2005下所有工程属性中的C++ Language wchar_t 都要设置为一致,从VS2003升级过来的话,建议设置为”NO”,因为VS2003的default值就是它。

2.5         VS2005下所有工程的多线程dll设置选项应该保持一致,比如统一设置为:/MD(for Release)和/MDd(for Debug)。

2.6        如果使用了DirectShow 9.0,在VS2005下编译例子BaseClasses会有错,对策:

2.6.1   在Ctlutil.h中做如下修改:

修改前:operator=(LONG);

修改后:COARefTime& operator=(LONG);

2.6.2   在Winnt.h中的“typedef void * POINTER_64 PVOID64;”前面追加一行“#define POINTER_64 __ptr64”。或者在DXSDK自己的basetsd.h里自己定义#define POINTER_64 __ptr64

 

 

vs2003升级到vs2005 VS2003移植到vs2005问题解决总结 立即下载

相关推荐

Oracle数据库RMAN异机恢复保姆级教程,按照步骤来操作,一次就成功!

本文深入解析RMAN异机恢复四大核心场景(演练、数据恢复、故障应急、测试环境搭建),提供从备份到验证的完整步骤和实战脚本。包含RAC到单机迁移技巧、路径调整、常见报错解决方案,助你彻底掌握数据库恢复的“救命技能”。DBA必备干货,强烈推荐

Jackyimi的博客 940

vs开发:源代码管理vss2005客户端连接服务器问题总汇

vss2005服务端和客户端全部安装完毕后,客户端无法连接vss服务器(不包含使用vpn)。原因如下: 1、可能未开启windows防火墙。此情况下,客户端ping服务器,无法ping通。 2、网络须使用家庭网。并且客户端已经加入服务器的家庭组。 3、如提示无法找到“srcsafe.ini”文件,可查看vss服务文件夹是否已共享到家庭组,并且已设为可读可写。 4、网络能ping通,已加入家

zhangxiyin6950的专栏 1146

基于GEC6818开发板的C/C++贪吃蛇小游戏

f.开始游戏(进入游戏,并没有马上开游戏,需要点击播放才能开始)2.相关宏,全局变量(可以根据自己需要进行修改)k.显示文字前的相关初始化。k.自定义font.h文件。1.需要的主要头文件。l.在开发板上显示字1。m.在开发板上显示字2。a.显示固定大小图片。h.线程1:获得坐标。

2301_77273301的博客 2132

网狐服务端VS2003升级VS2015

VS 2003 升级到 VS 2015,方便改进查看 自己在调试服务端的时候用2003 十分的不方便,动不动就卡死,蹦溃,萌生了升级的想法,以为会很麻烦,网上也没有相应的教程,结果,出乎意料的顺利,很简单就完成了升级 使用 VS2015 打开 2003 的项目 一路点是就可以,中途会有一段时间的导入加载,解析,升级,耐心等待即可 重新生成 刚升级导入去重新生成,试着去重新生成下比赛服务,会发现下面出现各种问题 其实上面就是项目的导出名字跟MFC 的数值变了 修改属性配置 其他

lua千分位加逗号实现 537

树莓派5安装ROS2小白指南避坑攻略

手把手教你如何在树莓派5上顺利安装ROS2,避开常见问题与陷阱,提升配置效率。针对树莓派5安装ros2过程中的依赖冲突、源配置错误等高频难题提供解决方案,适合新手快速上手。

weixin_35754962的博客 1004

FastDDS之共享内存

transport层负责为DDS用户数据收发和服务发现提供通信。包含UDP,TCP,SHM。

u010378559的博客 3085

vs2003转vs2005

1  cs文件里头的public class中间加上partialvs2005版的是这样  pulic partial class2  aspx文件头的Codebehind改成CodeFile以上两项在转换过程中有些文件会改变,有些不能自动改变,要手动来改3  如果引用的微软的树控件在visual studio 2003中只这样写TreeNode则还要在前面补上Microsoft.We

changyuming的专栏 921

深入CARLA地图底层:OpenDRIVE文件如何影响你的仿真效果与避坑指南

本文深入解析CARLA仿真中OpenDRIVE地图文件的核心作用,揭示其如何影响车道连接、交通规则和导航逻辑。通过实战案例和代码示例,提供五大典型地图问题的诊断与修复方案,帮助开发者优化仿真效果并规避常见陷阱。

weixin_34180452的博客 277

网狐游戏平台游戏编译常见错误[解决方案]

===================================================================== error C2504: “ITableUserActionEX” : 未定义基类 ===================================================================== 将 class CTable

zltianhen的专栏 3378

COCOS 3.8 接入高德定位SDK

/微信登录所必须的code。//是否获得code。

八喜互动 1993

实战篇| app爬虫不用真机

之前写过一篇基于真机app爬虫《App爬虫实战篇-以华为真机手机爬取集换社的app为例》,如果大家有用真机爬虫的经历,会深刻认识到真的不方便,一是自己的手机,经常会被电话、微信等打断,二是闲置手机,面对小批量数据还能勉强,大批量爬虫,会导致成本指数级上升,并且控制起来相对麻烦。以下就是常见的模拟器。emulator -avd my_avd -no-snapshot-save # 启动时不保存 snapshot。emulator -avd my_avd -wipe-data # 清除数据(恢复到出厂)

youbingchen的博客 596

VS2003升级到VS2005的error LNK2005

序:项目中遇到的一个问题,工程从VS2003平台升级到VS2005平台。以前一切正常的工程在VS2005下面出现了大量的error LNK2005,下面讲述解决办法。 LIBCMT.lib(calloc.obj) : error LNK2005: _calloc already defined in winalloc.objLIBCMT.lib(realloc.obj) : error L

867

Moviepy自动化剪辑视频中的广告

本教程展示了如何使用 Python 中的 MoviePy 库,通过检测和剪辑广告段落来实现视频内容的清洁播放。通过广告检测算法和 MoviePy 剪辑功能的结合,可以自动化处理视频,极大提升编辑效率。在学习和应用中,理解广告检测的原理及其实现方法尤为重要,以便针对不同类型的视频进行调整。此外,MoviePy 的灵活性使其适用于多种视频编辑场景,适合自动化内容制作与优化。

Mr数据杨 3412

把项目从VS2005升级到VS2013

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://rangercyh.blog.51cto.com/1444712/1394348 小斯同学花了几周的时间,终于把我们的服务端和客户端从vs2005升级到vs2013了。真是不得不给个赞。 升级的过程中遇到了各种问题,小斯同学跋山涉水、越过艰难险阻终于成功让我们用上了高大

Jason.liu的博客 3019

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

转:EVC4.0到VS2005所遇到的问题!

大家知道MOBIL5.0开始,EVC4开发的工程就无法进行DEBUG了,而必须使用VS.NET2005中的VC++来实现。但是以前我们费了很大心力做成的项目,也不能重新来写。今天通过一上午的研究,将转化方法贴出来和大家共勉。       这里我们以DIALOG BASED工程为例。首先用EVC4建立一个DIALOG BASED的POCKET PC 2003工程。此工程名我们暂定为TXDEM

sailorlyq的专栏 1228

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

在vs2003中编译ns2:工程文件

看来还是有不少的朋友为在vs2003下的编译问题所困,所以在此将本人创建好的工程文件上传,供有需要的朋友使用。使用方法为 将此压缩文件内的所有文件解压缩到“ns-allinone-2.31”这个目录下,覆盖所有原有文件即可。本工程文件参考了ns-allinone-2.31中的Makefile,因此可能与前几篇文章中提到的方法或步骤有所差异,敬请谅解。对于Makefile中提到的一些工程,我

嵌云阁 2522

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

EVC到vs2005工程移植

  大家知道MOBIL5.0开始,EVC4开发的工程就无法进行DEBUG了,而必须使用VS.NET2005中的VC++来实现。但是以前我们费了很大心力做成的项目,也不能重新来写。今天通过一上午的研究,将转化方法贴出来和大家共勉。       这里我们以DIALOG BASED工程为例。首先用EVC4建立一个DIALOG BASED的POCKET PC 2003工程。此工程名我们暂定

ziseliuxingzh的专栏 3999

[转]把项目从VS2005升级到VS2013

原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明。否则将追究法律责任。http://rangercyh.blog.51cto.com/1444712/1394348 小斯同学花了几周的时间,终于把我们的服务端和客户端从vs2005升级到vs2013了。真是不得不给个赞。升级的过程中遇到了各种问题,小斯同学跋山涉水、越过艰难险阻终于成功让我们用上了高大上的宇宙...

weixin_30911809的博客 123

VS2005+WINDDK+Driver Studio 3.2编译出第一个测试驱动程序(转载但有修正)

引自:http://www.cnblogs.com/Torres_fans/archive/2009/12/28/1634149.html 我希望的就是DDK(2600)+VS2005+DRIVER STUDIO(3.2) 这里的driver studio3.2不是破解版本,只能免费使用14天,难道卸载在安装?我争取再去找找破解版本,有了我就贴出来,没有的话只有卸载重安装了! 搭建好

kezhen的专栏 1851

vs2005调用vp2.2出现"应用程序正常初始化(0xc0150002)失败“的解决方法

这两天配制vega prime 2.2.1的vc编程

控球中锋 929

VS2003.NET打开优化选项后浮点运算错误

<br />我的开发环境是VS2003.NET,语言是C++,服务器是Windows2003 Server SP2。出错的代码很简单,伪代码如下: double a = <是一个很复杂的运算结果,值等于1.00000000000000000000011>;double b = <是一个很复杂的运算结果,值等于1.00000000000000000000013>;long c = (long)(a/b); 按着预期,上面的结果c应该等于1,但是在打开/o2优化之后,结果变成0,不打开优化结果正确。经过调研,发

Daniel Ding 的专栏 703

VS2005、VS2008中如何屏蔽讨厌的MSVCR*.dll的引用

VS系列工具作为目前微软主打的集成开发环境,在历经了近20多年的发展后,到如今已经可以说是Windows平台上各种IDE环境中的翘楚了。很多别的开发工具已经难望其项背了,如今VS2010也已经面市很长时间了,但是因为笔者囊中羞涩,无法升级硬件,所以也没有办法去进行那个180天的VS2010体验之旅了,实为憾事。当然这是别话,现在我主要使用的依然是VS2008,用它来开发我想要的东西。当然主要指使用

Gamebaby Rock Sun的博客 525

从Managed C++升级到C++/CLI时出现LNK2001错误的解决方法

  今天在把一个用Visual Studio.NE 2003编写的Managed C++程序改用Visual Studio 2005重新编译的时候遇到了这样的错误:错误 1 error LNK2001: 无法解析的外部符号 "?.cctor@@$$FYMXXZ" (?.cctor@@$$FYMXXZ) ButtonEncryption.obj 错误 2 fatal error LNK1120: 1

fanruinet的专栏 2575

VS中的 MD/MT设置

VS系列工具作为目前微软主打的集成开发环境,在历经了近20多年的发展后,到如今已经可以说是Windows平台上各种IDE环境中的翘楚了。很多别的开发工具已经难望其项背了,如今VS2010也已经面市很长时间了,但是因为笔者囊中羞涩,无法升级硬件,所以也没有办法去进行那个180天的VS2010体验之旅了,实为憾事。当然这是别话,现在我主要使用的依然是VS2008,用它来开发我想要的东西。当然主要指使用

whatday的专栏 2万+
下一篇: 好的代码---一个IT老兵总结的十点编码心得
dhm2000
博客等级 码龄20年 37粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值