先来个总结,VC6.0单向升级到vc2005以后版本,并不能完全兼容,主要分为以下五种情况:
①最常见的字符串格式问题
②消息响应函数原型发生了改变
③附带着的VC6.0编译来的DLL也要移植到vs2013下进行重新编译,方可正常链接。
④如果是商业项目(现在我移植的这个就是),一般还会有hlp文档,会提示缺少hcw.exe文件
下面是解决方案:
一、CString->char *转换:
CString m_Head; char *codefile; codefile=(LPSTR)(LPCTSTR)m_Head;
二、消息原型发生改变:
相应的提示信息诸如:static_cast” : 无法从“void (__thiscall CMainFrame::* )(NMTOOLBARA *,LRESULT *)”转换为“void (__thiscall CCmdTarget::* )(NMHDR *,LRESULT *);
首先我们把第一个参数改为NMHDR *,记得要将声明和定义都改了,然后在里面进行
NUMTOOLBARA *toolbar=reinterpret_cast<NUMTOOLBARA *> nmhdr;
的强制转换,其他代码就无须更改了。
三、报错信息就是链接错误
解决方案是将需要的dll的源码也拿过来重新编译。
四、提示的错误信息和hcw.exe缺少有关的话,就下载下面附件的压缩包,解压后,将文件夹路径添加到PATH。
这样会有错误的弹窗出现,但不用管它,至少可以进行往下的编译了。
http://download.csdn.net/detail/tianyuan521521/8576037
原文:http://blog.csdn.net/tianyuan521521/article/details/44948683