vc6.0項目到vc2013移植記錄


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



發佈了35 篇原創文章 · 獲贊 8 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章