先來個總結,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