VC++6.0中工程移植到VS2010中遇到的一些问题

【转】如果作者介意,请及时转告并在24小时内删除,谢谢.

随机过程实验的C++工程是运行在VC++6.0平台的,而我的机子上是VS2010,貌似VC++6.0在WIN7-64bit机上很难安装成功,就不想折腾,直接就用VS2010吧,虽然知道肯定不会完全向下兼容,最后终于解决,备忘吧。

1.缺失dll文件的的问题

这个还是一个一个去下载吧,然后将其放在SysWOW64,因为看到在编译链接时就是在这个目录下寻找dll的,虽然一般dll也会放在system32目录下,是不是system32下放的是32位应用程序需要的dll文件,而SysWOW64下是64位的,在网上看到说安装dll后需要在运行中运行regsvr32 msvcrtd.dll(这里以msvcrtd.dll为例)注册,但貌似注册不怎么成功,不注册也可以,只放在相应目录下即可。

2.语法不兼容的问题

这些也应该很常见,根据报错在网上找吧

我的问题是sqrt这个函数的问题

这是VS2010对数据类型的检查更加严格

在VS2010中sqrt()至少有:

double sqrt(double x)
long double sqrt (long double x);

如果sqrt()的参数不是double ,long double,如果不显式强制类型转换,sqrt()就不知道该强制转换为哪种数据类型,就会报错,编译不通过

sqrt()函数要求参数类型是double,强制转换成double。
例如:sqrt((double)a);

还有一个关于MFC的问题:

error C2440: “static_cast”: 无法从“UINT (__thiscall CScope::* )(CPoint)”

根据网上的答案,要修改源程序中和MFC有关的两处:

afx_msg UINT OnNcHitTest(CPoint point);  

UINT CTestDlg::OnNcHitTest(CPoint point)

=>

afx_msg LRESULT OnNcHitTest(CPoint point);     //.h

LRESULT CTestDlg::OnNcHitTest(CPoint point)     //.cpp


这些问题在网上都应该可以找到答案,然后尝试看能否解决


3.sdf文件和ipch文件夹的处理

VS2010打开某个工程 ,转换成功之后,在工程目录看见一个sdf文件和一个ipch文件夹,都超大(起码几十M),一个几百k 的工程,结果用vs打开过后变成了两百多M,大家也许发现了,visual studio 2010 中新建一个项目会同时建立一个ipch目录与sdf文件,即使你删掉它,再次打开工程时还是会重新建立。动辄30、50M的容量让我们心里很不爽。其实这是2010的一个新功能,与智能提示,错误提示,代码恢复、团队本地仓库等等息息相关的东西。如果大家觉得很不爽可以关掉它。Tools —— Options —— Text Editor —— C/C++ —— Advanced ——Disable Database 设置为True,默认为false。这样,你关闭visual后删掉工程目录下的ipch与sdf就不会再产生了

还有就是一些关于配置信息的可以按快捷键Alt+F7来看该工程的属性

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值