vc6代码移植到vs2008的问题总结

最近做一个opencv+vc6的一个图像工程,项目中使用的vc太老了,希望移植代码到vs2008.

1.先搭建vs2008+opencv:http://www.opencv.org.cn/index.php/VC_2008_Express%E4%B8%8B%E5%AE%89%E8%A3%85OpenCV2.3.1

2.代码拿过来直接编译,错误多多,出现编译错误:LINK : fatal error LNK1104: cannot open file 'LIBC.lib'
    解决办法,在Project-->Setting-->Linker-->Command Line-->Additional options中加入:  /nodefaultlib:libc

3.warning:   D9035 : Fr"选项已否决,并将在将来的版本中移除
              D9036 : 使用“FR”而不使用“Fr"
解决方法:
     设置Project propert/C/C++/浏览信息/启用浏览信息/“无本地符号(/Fr)"---->"包含所有浏览信息(/FR);

4.warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
这个问题是C语言里面某些函数的安全性检查通不过。消除Warning信息方法:
(1)按照编译器推荐的把函数改为安全的。例如:strcpy改为strcpy_s;itoa改为_itoa_s等等;
(2)或设置Project -> Properties -> Configuration Properties -> c/c++ -> Preprocessor -> Preprocessor Definitons里面添加 _CRT_SUCURE_NO_WARNINGS / _CRT_SUCURE_NO_DEPRECATE

 (3)#pragma warning( disable : 4996 ) //guobo add because of "warning C4996: '_vsnprintf'"
5.error LNK2019: unresolved external symbol "wchar_t * __stdcall _com_util::Co.....
解决方法,
 Property page ->C/C++ ->Language ->treat Wchar-t  改为 No

6.LINK : fatal error LNK1104: cannot open file 'LIBC.lib'

解决方法:在Project-->Setting-->Linker-->Command Line-->Additional options中加入:  /nodefaultlib:libc

7.其他问题也有一些函数声明类型及变量转换的问题,一一解决掉就ok了。

8.我负责的只是一个dll文件,由于.exe文件是vc6编译的,两者之间还是不能一起工作。.exe文件工程比较大,移植工作也就搁浅了。


参考:

http://blog.csdn.net/lcbiotech/article/details/4762935
http://blog.csdn.net/anson_niu/article/details/4154440

···

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值