代码从VS2003升级到VS2005的编译链接问题及解决方法
来源:互联网 发布:mac剪切快捷键 编辑:程序博客网 时间:2024/05/01 01:10
最近做了一个代码从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遇到的问题
- 从eVC4升级到vs2005时遇到的问题及解决方法
- VS2003升级到VS2005后遇到的问题
- 项目从vs2003升级到Vs2008的问题
- VS2003成功升级到VS2005
- 从vc6升级到vc7的一些问题及解决方法
- 从vc6升级到vc7的一些问题及解决方法
- 从vc6升级到vc7的一些问题及解决方法
- VS2003转换到VS2005的一些问题
- VC6和VS2003 转换到VS2005 时可能会遇到的问题以及解决方法
- VC6和VS2003 转换到VS2005 时可能会遇到的问题以及解决方法
- VC6 和 VS2003 转换到VS2005 时可能会遇到的问题以及解决方法
- VC6 和 VS2003 转换到VS2005 时可能会遇到的问题以及解决方法
- VC6 和 VS2003 转换到VS2005 时可能会遇到的问题以及解决方法
- VC6\VS2003 转换到VS2005 时可能会遇到的问题以及解决方法
- VB.NET从VS2003升到VS2005后报表无法使用的解决方法 - 探寻者飞 - 博客园
- 从VS2003(.net1.1)升级到vs2005(.net2.0)全程跟踪记录
- 打印和关闭
- 使用 JMX 访问 WebLogic Server MBean
- Java读文件写文件操作
- ASP.Net中配置和使用FCKeditor
- ASP.NET生成随机密码
- 代码从VS2003升级到VS2005的编译链接问题及解决方法
- some basic program you we can study
- hadoop公共模块RPC实现机理
- Nehe的OpenGL框架(MFC版)
- DWR使用方式简介
- 对Wpf技术的一些随想
- 中华人民共和国劳动合同法实施条例
- 当电脑进入windows loading 界面就死机处理方法
- 开篇有益