編譯出錯處理
阿新 • • 發佈:2019-02-20
1:Error translating g:/驅動程式/2004-07-21_tiamoDisk/tiamoDisk/bin/check/tiamoBus.sys: Matching PDB file not found.
是因為它不支援中文路徑名稱,即檔案的路徑中不允許有中文
2:SDK中Sample的編譯環境
如果使用Microsoft Visual Studio 2005,在工具->選項->專案和解決方案->vc++目錄中進行如下設定。
可執行檔案:
D:/Program Files/Microsoft Visual Studio 8/VC
D:/Program Files/Microsoft Visual Studio 8/VC/redist/Debug_NonRedist/x86
/Microsoft.VC80.DebugMFC
D:/Program Files/Microsoft Visual Studio 8/VC/lib
D:/Program Files/Microsoft Visual Studio 8/VC/atlmfc/lib
D:/Program Files/Microsoft Visual Studio 8/VC/atlmfc/include
D:/Program Files/Microsoft Visual Studio 8/VC/include
D:/DXSDK/Lib
D:/DXSDK/Bin
D:/DXSDK/Samples/C++/DirectShow/BaseClasses
D:/DXSDK/Samples/C++/Common/Include
D:/DXSDK/Include
包含檔案:
D:/Program Files/Microsoft Visual Studio 8/VC/include
D:/Program Files/Microsoft Visual Studio 8/VC/atlmfc/include
D:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/Include
D:/DXSDK/Include
D:/DXSDK/Samples/C++/DirectShow/BaseClasses
D:/DXSDK/Samples/C++/Common/Include
庫檔案:
D:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/Lib
D:/Program Files/Microsoft Visual Studio 8/VC/lib
D:/Program Files/Microsoft Visual Studio 8/VC/atlmfc/lib
D:/Program Files/Microsoft Visual Studio 8/VC
D:/Program Files/Microsoft Visual Studio 8/VC/atlmfc/include/i386
D:/DXSDK/Lib
D:/DXSDK/Samples/C++/DirectShow/BaseClasses/Debug
D:/DXSDK/Samples/C++/DirectShow/BaseClasses/Release
D:/DXSDK/Samples/C++/DirectShow/BaseClasses
1針對編譯DXSDK/Samples/c++/Direct3D時出現的錯誤,進行解析。
錯誤例子:
CVTRES : fatal error CVT1100: 重複的資源。type:MANIFEST, name:1, language:0×0409
LINK : fatal error LNK1123: 轉換到COFF 期間失敗: 檔案無效或損壞
解決方案:
我的編譯環境是Microsoft Visual Studio 2005
將所有工程的屬性(工程全選->右擊->屬性)->配置屬性->清單工具->輸入輸出->嵌入清單,選擇“否”,然後編譯,就OK了。
你可以參照微軟的官方說明:http://support.microsoft.com/kb/320216/zh-cn
2針對出現未宣告識別符號的錯誤進行解析。
錯誤例子:for( m=0; m<pDevice->dwNumModes; m++ )
{
if( pDevice->modes[m].Width==640 && pDevice->modes[m].Height==480 )
{
error C2065: “m”: 未宣告的識別符號
像這種錯誤,你可以查詢它的定義,在將它的定義複製到錯誤行的前面。如上述例子中,你可以在for的上一行新增long m;。就可以了。
3針對出現無法初始化問題的錯誤進行解析。
錯誤例子:
TCHAR* strLastSlash = _tcsrchr( str, TEXT(‘//’) )
錯誤:error C2440: “初始化”: 無法從“const wchar_t *”轉換為“TCHAR *”
像這樣的錯誤,你可以在=的右邊進行強制轉換。如下:
TCHAR* strLastSlash = (TCHAR*)_tcsrchr( str, TEXT(‘//’) );
4針對警告被視為錯誤的問題進行解析。
錯誤例子:
c:/dxsdk/samples/c++/misc/dxdiagreport/dxdiaginfo.cpp(322) : error C2220: 警告被視為錯誤- 沒有生成“object”檔案。
這種錯誤的原因是:原因是該檔案的內碼表為英文,而我們系統中的內碼表為中文。
解決方案:啟動Microsoft Visual Studio 2005,檔案->開啟->選擇c:/dxsdk/samples/c++/misc/dxdiagreport/dxdiaginfo.cpp,然後儲存。從新開啟程式檔案執行,此錯誤不再出現。
如果上述不能去掉錯誤,還可以點選專案,右擊選擇屬性->配置屬性->c/c++->常規,將“警告視為錯誤”的選項改為“否”。就可以!
5編譯BaseClasses
正在編譯…
dllentry.cpp
D:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/Include/winnt.h(222) : error C2146: 語法錯誤: 缺少“;”(在識別符號“PVOID64”的前面)
D:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/Include/winnt.h(222) : error C4430: 缺少型別說明符- 假定為int。注意: C++ 不支援預設int
D:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/Include/winnt.h(5940) : error C2146: 語法錯誤: 缺少“;”(在識別符號“Buffer”的前面)
D:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/Include/winnt.h(5940) : error C4430: 缺少型別說明符- 假定為int。注意: C++ 不支援預設int
D:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/Include/winnt.h(5940) : error C4430: 缺少型別說明符- 假定為int。注意: C++ 不支援預設int
D:/DXSDK/Include/uuids.h : warning C4819: 該檔案包含不能在當前內碼表(936)中表示的字元。請將該檔案儲存為Unicode 格式以防止資料丟失
生成日誌儲存在“file://d:/BaseClasses/Debug_Unicode/BuildLog.htm”
BaseClasses - 5 個錯誤,個警告
出現錯誤的地方:
typedef void *PVOID;
typedef void * POINTER_64 PVOID64;
更改:
#define POINTER_64 __ptr64///////gai
typedef void *PVOID;
typedef void * POINTER_64 PVOID64;////
錯誤:./wxdebug.cpp(567) : error C4430: 缺少型別說明符- 假定為int。注意: C++ 不支援預設int
錯誤地方:static g_dwLastRefresh = 0;
修改:static int g_dwLastRefresh = 0;
6編譯Capture,無法開啟libci.lib
出現錯誤:LINK : fatal error LNK1104: 無法開啟檔案“libci.lib”
生成日誌儲存在“file://d:/DXSDK/Samples/C++/DirectShow/Capture/CaptureTex/Debug/BuildLog.htm”
CaptureTex - 1 個錯誤,個警告
錯誤原因:缺少資料庫LIBCI.LIB在2003和2005中已經不存在了
解決方案:將庫檔案指向VC6中的庫檔案。
其他詳細資訊請見
SDK中Sample編譯錯誤及其解決方案(二)
是因為它不支援中文路徑名稱,即檔案的路徑中不允許有中文
2:SDK中Sample的編譯環境
如果使用Microsoft Visual Studio 2005,在工具->選項->專案和解決方案->vc++目錄中進行如下設定。
可執行檔案:
D:/Program Files/Microsoft Visual Studio 8/VC
D:/Program Files/Microsoft Visual Studio 8/VC/redist/Debug_NonRedist/x86
/Microsoft.VC80.DebugMFC
D:/Program Files/Microsoft Visual Studio 8/VC/lib
D:/Program Files/Microsoft Visual Studio 8/VC/atlmfc/lib
D:/Program Files/Microsoft Visual Studio 8/VC/atlmfc/include
D:/Program Files/Microsoft Visual Studio 8/VC/include
D:/DXSDK/Lib
D:/DXSDK/Bin
D:/DXSDK/Samples/C++/DirectShow/BaseClasses
D:/DXSDK/Samples/C++/Common/Include
D:/DXSDK/Include
包含檔案:
D:/Program Files/Microsoft Visual Studio 8/VC/include
D:/Program Files/Microsoft Visual Studio 8/VC/atlmfc/include
D:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/Include
D:/DXSDK/Include
D:/DXSDK/Samples/C++/DirectShow/BaseClasses
D:/DXSDK/Samples/C++/Common/Include
庫檔案:
D:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/Lib
D:/Program Files/Microsoft Visual Studio 8/VC/lib
D:/Program Files/Microsoft Visual Studio 8/VC/atlmfc/lib
D:/Program Files/Microsoft Visual Studio 8/VC
D:/Program Files/Microsoft Visual Studio 8/VC/atlmfc/include/i386
D:/DXSDK/Lib
D:/DXSDK/Samples/C++/DirectShow/BaseClasses/Debug
D:/DXSDK/Samples/C++/DirectShow/BaseClasses/Release
D:/DXSDK/Samples/C++/DirectShow/BaseClasses
1針對編譯DXSDK/Samples/c++/Direct3D時出現的錯誤,進行解析。
錯誤例子:
CVTRES : fatal error CVT1100: 重複的資源。type:MANIFEST, name:1, language:0×0409
LINK : fatal error LNK1123: 轉換到COFF 期間失敗: 檔案無效或損壞
解決方案:
我的編譯環境是Microsoft Visual Studio 2005
將所有工程的屬性(工程全選->右擊->屬性)->配置屬性->清單工具->輸入輸出->嵌入清單,選擇“否”,然後編譯,就OK了。
你可以參照微軟的官方說明:http://support.microsoft.com/kb/320216/zh-cn
2針對出現未宣告識別符號的錯誤進行解析。
錯誤例子:for( m=0; m<pDevice->dwNumModes; m++ )
{
if( pDevice->modes[m].Width==640 && pDevice->modes[m].Height==480 )
{
error C2065: “m”: 未宣告的識別符號
像這種錯誤,你可以查詢它的定義,在將它的定義複製到錯誤行的前面。如上述例子中,你可以在for的上一行新增long m;。就可以了。
3針對出現無法初始化問題的錯誤進行解析。
錯誤例子:
TCHAR* strLastSlash = _tcsrchr( str, TEXT(‘//’) )
錯誤:error C2440: “初始化”: 無法從“const wchar_t *”轉換為“TCHAR *”
像這樣的錯誤,你可以在=的右邊進行強制轉換。如下:
TCHAR* strLastSlash = (TCHAR*)_tcsrchr( str, TEXT(‘//’) );
4針對警告被視為錯誤的問題進行解析。
錯誤例子:
c:/dxsdk/samples/c++/misc/dxdiagreport/dxdiaginfo.cpp(322) : error C2220: 警告被視為錯誤- 沒有生成“object”檔案。
這種錯誤的原因是:原因是該檔案的內碼表為英文,而我們系統中的內碼表為中文。
解決方案:啟動Microsoft Visual Studio 2005,檔案->開啟->選擇c:/dxsdk/samples/c++/misc/dxdiagreport/dxdiaginfo.cpp,然後儲存。從新開啟程式檔案執行,此錯誤不再出現。
如果上述不能去掉錯誤,還可以點選專案,右擊選擇屬性->配置屬性->c/c++->常規,將“警告視為錯誤”的選項改為“否”。就可以!
5編譯BaseClasses
正在編譯…
dllentry.cpp
D:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/Include/winnt.h(222) : error C2146: 語法錯誤: 缺少“;”(在識別符號“PVOID64”的前面)
D:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/Include/winnt.h(222) : error C4430: 缺少型別說明符- 假定為int。注意: C++ 不支援預設int
D:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/Include/winnt.h(5940) : error C2146: 語法錯誤: 缺少“;”(在識別符號“Buffer”的前面)
D:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/Include/winnt.h(5940) : error C4430: 缺少型別說明符- 假定為int。注意: C++ 不支援預設int
D:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/Include/winnt.h(5940) : error C4430: 缺少型別說明符- 假定為int。注意: C++ 不支援預設int
D:/DXSDK/Include/uuids.h : warning C4819: 該檔案包含不能在當前內碼表(936)中表示的字元。請將該檔案儲存為Unicode 格式以防止資料丟失
生成日誌儲存在“file://d:/BaseClasses/Debug_Unicode/BuildLog.htm”
BaseClasses - 5 個錯誤,個警告
出現錯誤的地方:
typedef void *PVOID;
typedef void * POINTER_64 PVOID64;
更改:
#define POINTER_64 __ptr64///////gai
typedef void *PVOID;
typedef void * POINTER_64 PVOID64;////
錯誤:./wxdebug.cpp(567) : error C4430: 缺少型別說明符- 假定為int。注意: C++ 不支援預設int
錯誤地方:static g_dwLastRefresh = 0;
修改:static int g_dwLastRefresh = 0;
6編譯Capture,無法開啟libci.lib
出現錯誤:LINK : fatal error LNK1104: 無法開啟檔案“libci.lib”
生成日誌儲存在“file://d:/DXSDK/Samples/C++/DirectShow/Capture/CaptureTex/Debug/BuildLog.htm”
CaptureTex - 1 個錯誤,個警告
錯誤原因:缺少資料庫LIBCI.LIB在2003和2005中已經不存在了
解決方案:將庫檔案指向VC6中的庫檔案。
其他詳細資訊請見
SDK中Sample編譯錯誤及其解決方案(二)