1. 程式人生 > >編譯出錯處理

編譯出錯處理

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編譯錯誤及其解決方案(二)