編譯公司一個幾年前的老項目,是從VC6.0升級到VS2005的。app
1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(295) : error C2059: 語法錯誤 : 「__stdcall」 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(295) : error C2091: 函數返回函數 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(295) : error C4430: 缺乏類型說明符 - 假定爲 int。注意: C++ 不支持默認 int 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(295) : error C2146: 語法錯誤 : 缺乏「;」(在標識符「p」的前面) 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(295) : error C4430: 缺乏類型說明符 - 假定爲 int。注意: C++ 不支持默認 int 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(295) : error C4430: 缺乏類型說明符 - 假定爲 int。注意: C++ 不支持默認 int 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(295) : error C2061: 語法錯誤 : 標識符「Ptr」 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(295) : error C2805: 二進制「operator =」的參數太少 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(295) : error C2333: 「CComCtlWrapper::DSA_Create_Type::operator =」: 函數聲明中有錯誤;跳過函數體 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(295) : error C2143: 語法錯誤 : 缺乏「;」(在「->」的前面) 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(295) : error C4430: 缺乏類型說明符 - 假定爲 int。注意: C++ 不支持默認 int 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(295) : error C4430: 缺乏類型說明符 - 假定爲 int。注意: C++ 不支持默認 int 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(295) : error C2833: 「operator Ptr」不是可識別的運算符或類型 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(295) : error C2059: 語法錯誤 : 「newline」 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(295) : error C2334: 「{」的前面有意外標記;跳過明顯的函數體 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(295) : error C2146: 語法錯誤 : 缺乏「;」(在標識符「_DSA_Create」的前面) 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(295) : error C4430: 缺乏類型說明符 - 假定爲 int。注意: C++ 不支持默認 int 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(295) : error C4430: 缺乏類型說明符 - 假定爲 int。注意: C++ 不支持默認 int 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(295) : warning C4183: 「_DSA_Create」: 缺乏返回類型;假定爲返回「int」的成員函數 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(296) : error C2061: 語法錯誤 : 標識符「HDSA」 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(296) : error C2061: 語法錯誤 : 標識符「HDSA」 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(297) : error C2061: 語法錯誤 : 標識符「HDSA」 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(297) : error C2061: 語法錯誤 : 標識符「HDSA」 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(298) : error C2061: 語法錯誤 : 標識符「HDSA」 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(298) : error C2061: 語法錯誤 : 標識符「HDSA」 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(299) : error C2061: 語法錯誤 : 標識符「HDSA」 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(299) : error C2061: 語法錯誤 : 標識符「HDSA」 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(300) : error C2059: 語法錯誤 : 「__stdcall」 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(300) : error C2091: 函數返回函數 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(300) : error C4430: 缺乏類型說明符 - 假定爲 int。注意: C++ 不支持默認 int 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(300) : error C2146: 語法錯誤 : 缺乏「;」(在標識符「p」的前面) 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(300) : error C4430: 缺乏類型說明符 - 假定爲 int。注意: C++ 不支持默認 int 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(300) : error C4430: 缺乏類型說明符 - 假定爲 int。注意: C++ 不支持默認 int 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(300) : error C2061: 語法錯誤 : 標識符「Ptr」 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(300) : error C2805: 二進制「operator =」的參數太少 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(300) : error C2333: 「CComCtlWrapper::DPA_Create_Type::operator =」: 函數聲明中有錯誤;跳過函數體 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(300) : error C2143: 語法錯誤 : 缺乏「;」(在「->」的前面) 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(300) : error C4430: 缺乏類型說明符 - 假定爲 int。注意: C++ 不支持默認 int 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(300) : error C4430: 缺乏類型說明符 - 假定爲 int。注意: C++ 不支持默認 int 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(300) : error C2833: 「operator Ptr」不是可識別的運算符或類型 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(300) : error C2059: 語法錯誤 : 「newline」 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(300) : error C2334: 「{」的前面有意外標記;跳過明顯的函數體 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(300) : error C2146: 語法錯誤 : 缺乏「;」(在標識符「_DPA_Create」的前面) 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(300) : error C4430: 缺乏類型說明符 - 假定爲 int。注意: C++ 不支持默認 int 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(300) : error C4430: 缺乏類型說明符 - 假定爲 int。注意: C++ 不支持默認 int 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(300) : warning C4183: 「_DPA_Create」: 缺乏返回類型;假定爲返回「int」的成員函數 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(301) : error C2061: 語法錯誤 : 標識符「HDPA」 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(301) : error C2061: 語法錯誤 : 標識符「HDPA」 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(302) : error C2061: 語法錯誤 : 標識符「HDPA」 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(302) : error C2061: 語法錯誤 : 標識符「HDPA」 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(303) : error C2061: 語法錯誤 : 標識符「HDPA」 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(303) : error C2061: 語法錯誤 : 標識符「HDPA」 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(304) : error C2061: 語法錯誤 : 標識符「HDPA」 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(304) : error C2061: 語法錯誤 : 標識符「HDPA」 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(305) : error C2061: 語法錯誤 : 標識符「HDPA」 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(305) : error C2061: 語法錯誤 : 標識符「HDPA」 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(306) : error C2061: 語法錯誤 : 標識符「HDPA」 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(306) : error C2061: 語法錯誤 : 標識符「HDPA」 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(307) : error C2061: 語法錯誤 : 標識符「HDPA」 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(307) : error C2061: 語法錯誤 : 標識符「HDPA」 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(308) : error C2061: 語法錯誤 : 標識符「HDPA」 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(308) : error C2061: 語法錯誤 : 標識符「HDPA」 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(309) : error C2061: 語法錯誤 : 標識符「HDPA」 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(309) : error C2061: 語法錯誤 : 標識符「HDPA」 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(310) : error C2061: 語法錯誤 : 標識符「HDPA」 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(310) : error C2061: 語法錯誤 : 標識符「HDPA」 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(295) : error C2614: 「CComCtlWrapper::DSA_Create_Type」: 非法的成員初始化:「p」不是基或成員 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(295) : error C2065: 「p」: 未聲明的標識符 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(295) : error C2039: 「Ptr」: 不是「CComCtlWrapper::DSA_Create_Type」的成員 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(295) : 參見「CComCtlWrapper::DSA_Create_Type」的聲明 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(295) : error C2065: 「Ptr」: 未聲明的標識符 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(295) : error C2143: 語法錯誤 : 缺乏「;」(在「GetProcAddress」的前面) 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(295) : error C2065: 「HDSA」: 未聲明的標識符 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(295) : error C2146: 語法錯誤 : 缺乏「;」(在標識符「result」的前面) 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(295) : error C2065: 「result」: 未聲明的標識符 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(295) : error C2678: 二進制「!=」: 沒有找到接受「CComCtlWrapper::DSA_Create_Type」類型的左操做數的運算符(或沒有可接受的轉換) 1>XXX\Microsoft Visual Studio 8\VC\PlatformSDK\include\guiddef.h(197): 多是「int operator !=(const GUID &,const GUID &)」 1>試圖匹配參數列表「(CComCtlWrapper::DSA_Create_Type, int)」時 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(295) : error C2064: 項不會計算爲接受 2 個參數的函數 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(296) : error C2065: 「hdsa」: 未聲明的標識符 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(297) : error C2065: 「pfnCB」: 未聲明的標識符 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(297) : error C2065: 「pData」: 未聲明的標識符 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(298) : error C2065: 「i」: 未聲明的標識符 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(299) : error C2065: 「pitem」: 未聲明的標識符 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(300) : error C2614: 「CComCtlWrapper::DPA_Create_Type」: 非法的成員初始化:「p」不是基或成員 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(300) : error C2039: 「Ptr」: 不是「CComCtlWrapper::DPA_Create_Type」的成員 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(300) : 參見「CComCtlWrapper::DPA_Create_Type」的聲明 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(300) : error C2143: 語法錯誤 : 缺乏「;」(在「GetProcAddress」的前面) 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(300) : error C2065: 「HDPA」: 未聲明的標識符 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(300) : error C2146: 語法錯誤 : 缺乏「;」(在標識符「result」的前面) 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(300) : error C2678: 二進制「!=」: 沒有找到接受「CComCtlWrapper::DPA_Create_Type」類型的左操做數的運算符(或沒有可接受的轉換) 1>XXX\Microsoft Visual Studio 8\VC\PlatformSDK\include\guiddef.h(197): 多是「int operator !=(const GUID &,const GUID &)」 1>試圖匹配參數列表「(CComCtlWrapper::DPA_Create_Type, int)」時 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(300) : error C2064: 項不會計算爲接受 1 個參數的函數 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(301) : error C2065: 「hdpa」: 未聲明的標識符 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(309) : error C2065: 「pfnCompare」: 未聲明的標識符 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(309) : error C2065: 「lParam」: 未聲明的標識符 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(310) : error C2065: 「pFind」: 未聲明的標識符 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(310) : error C2065: 「iStart」: 未聲明的標識符 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.h(310) : error C2065: 「options」: 未聲明的標識符 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxwin.h(3017) : error C2061: 語法錯誤 : 標識符「PBUTTON_IMAGELIST」 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxwin.h(3018) : error C2061: 語法錯誤 : 標識符「PBUTTON_IMAGELIST」 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.inl(94) : error C2143: 語法錯誤 : 缺乏「;」(在「__stdcall」的前面) 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.inl(94) : error C2433: 「HDSA」: 不容許在數據聲明中使用「inline」 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.inl(94) : error C4430: 缺乏類型說明符 - 假定爲 int。注意: C++ 不支持默認 int 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.inl(94) : error C2371: 「HDSA」: 重定義;不一樣的基類型 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.inl(94) : error C4430: 缺乏類型說明符 - 假定爲 int。注意: C++ 不支持默認 int 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.inl(95) : error C2146: 語法錯誤 : 缺乏「)」(在標識符「hdsa」的前面) 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.inl(95) : warning C4229: 使用了記時錯誤 : 忽略數據上的修飾符 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.inl(95) : error C2433: 「AfxDSA_Destroy」: 不容許在數據聲明中使用「inline」 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.inl(95) : error C2059: 語法錯誤 : 「)」 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.inl(95) : error C2143: 語法錯誤 : 缺乏「;」(在「{」的前面) 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.inl(95) : error C2447: 「{」: 缺乏函數標題(是不是老式的形式表?) 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.inl(96) : error C2146: 語法錯誤 : 缺乏「)」(在標識符「hdsa」的前面) 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.inl(96) : warning C4229: 使用了記時錯誤 : 忽略數據上的修飾符 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.inl(96) : error C2182: 「AfxDSA_DestroyCallback」: 非法使用「void」類型 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.inl(96) : error C2433: 「AfxDSA_DestroyCallback」: 不容許在數據聲明中使用「inline」 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.inl(96) : error C2059: 語法錯誤 : 「)」 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.inl(96) : error C2143: 語法錯誤 : 缺乏「;」(在「{」的前面) 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.inl(96) : error C2447: 「{」: 缺乏函數標題(是不是老式的形式表?) 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.inl(97) : error C2146: 語法錯誤 : 缺乏「)」(在標識符「hdsa」的前面) 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.inl(97) : warning C4229: 使用了記時錯誤 : 忽略數據上的修飾符 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.inl(97) : error C2433: 「AfxDSA_GetItemPtr」: 不容許在數據聲明中使用「inline」 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.inl(97) : error C2059: 語法錯誤 : 「)」 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.inl(97) : error C2143: 語法錯誤 : 缺乏「;」(在「{」的前面) 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.inl(97) : error C2447: 「{」: 缺乏函數標題(是不是老式的形式表?) 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.inl(98) : error C2146: 語法錯誤 : 缺乏「)」(在標識符「hdsa」的前面) 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.inl(98) : warning C4229: 使用了記時錯誤 : 忽略數據上的修飾符 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.inl(98) : error C2433: 「AfxDSA_InsertItem」: 不容許在數據聲明中使用「inline」 1>XXX\Microsoft Visual Studio 8\VC\atlmfc\include\afxcomctl32.inl(98) : fatal error C1003: 錯誤計數超過 100;正在中止編譯
網上說「此問題已經解決,系統版本問題,須要包含這個文件時,先#define WINVER 0x400 包含後在#define WINVER 0x600」函數
換了系統,換了vs2005版本,加了#define WINVER 0x400、#define WINVER 0x600,可是徹底不起做用,因而打算重寫此程序。ui
重建一個項目是徹底能夠的,可是要把原來項目中的所有功能移過來是很麻煩的。因而想到在原項目上改,先去掉多餘功能,若是沒問題再一點點添加功能。調試
發現當去掉附加包含目錄中全部項目不須要的頭文件,只保留須要的頭文件時,奇蹟發生了,程序編譯經過,再也不有那個錯誤。code
這個問題多是包含了不應包含的某一個頭文件,能夠經過把不須要的全都去掉試試。反正我是這麼解決了,汗!orm