轉自IT魔鬼訓練營
作者 網研所 2007年08月15日
編譯Capture
出現錯誤:LINK : fatal error LNK1104: 無法打開文件「libci.lib」
生成日誌保存在「file://d:\DXSDK\Samples\C++\DirectShow\Capture\CaptureTex\Debug\BuildLog.htm」
CaptureTex - 1 個錯誤,個警告
錯誤原因:缺少數據庫LIBCI.LIB在2003和2005中已經不存在了
編譯DMODEMO
錯誤:
..\..\..\Common\Src\dsutil.cpp(686) : error C2065: 「i」: 未聲明的標識符
錯誤的地方:
if( i != m_dwNumBuffers )
return m_apDSBuffer[ i ];
else
return m_apDSBuffer[ rand() % m_dwNumBuffers ];
更改:在前面添加 unsigned char i;
編譯DMOSAMPLE
d:\DXSDK\include\dmoimpl.h(622) : error C2065: 「dw」: 未聲明的標識符
d:\DXSDK\include\dmoimpl.h(588): 編譯類模板成員函數「HRESULT IMediaObjectImpl<_derived_>::ProcessOutput(DWORD,DWORD,DMO_OUTPUT_DATA_BUFFER *,DWORD *)」時
with
[
_DERIVED_=CSample,
NUMBEROFINPUTS=1,
NUMBEROFOUTPUTS=2
]
d:\dxsdk\samples\c++\directshow\dmo\dmosample\Sample.h(21): 參見對正在編譯的類模板實例化「IMediaObjectImpl<_derived_>」的引用
with
[
_DERIVED_=CSample,
NUMBEROFINPUTS=1,
NUMBEROFOUTPUTS=2
]
d:\DXSDK\include\dmoimpl.h(623) : error C2228: 「.dwStatus」的左邊必須有類/結構/聯合
d:\DXSDK\include\dmoimpl.h(624) : error C2228: 「.fIncomplete」的左邊必須有類/結構/聯合
d:\DXSDK\include\dmoimpl.h(626) : error C2228: 「.fIncomplete」的左邊必須有類/結構/聯合
sample.cpp
d:\DXSDK\include\uuids.h : warning C4819: 該文件包含不能在當前代碼頁(936)中表示的字符。請將該文件保存為Unicode 格式以防止數據丟失
d:\DXSDK\include\dmoimpl.h(622) : error C2065: 「dw」: 未聲明的標識符
d:\DXSDK\include\dmoimpl.h(588): 編譯類模板成員函數「HRESULT IMediaObjectImpl<_derived_>::ProcessOutput(DWORD,DWORD,DMO_OUTPUT_DATA_BUFFER *,DWORD *)」時
with
[
_DERIVED_=CSample,
NUMBEROFINPUTS=1,
NUMBEROFOUTPUTS=2
]
d:\dxsdk\samples\c++\directshow\dmo\dmosample\Sample.h(21): 參見對正在編譯的類模板實例化「IMediaObjectImpl<_derived_>」的引用
with
[
_DERIVED_=CSample,
NUMBEROFINPUTS=1,
NUMBEROFOUTPUTS=2
]
d:\DXSDK\include\dmoimpl.h(623) : error C2228: 「.dwStatus」的左邊必須有類/結構/聯合
d:\DXSDK\include\dmoimpl.h(624) : error C2228: 「.fIncomplete」的左邊必須有類/結構/聯合
d:\DXSDK\include\dmoimpl.h(626) : error C2228: 「.fIncomplete」的左邊必須有類/結構/聯合
state.cpp
StdAfx.cpp
util.cpp
正在生成代碼…
生成日誌保存在「file://d:\DXSDK\Samples\C++\DirectShow\DMO\DMOSample\Debug_Unicode\BuildLog.htm」
dmosample - 8 個錯誤,個警告
========== 生成: 0 已成功, 1 已失敗, 0 最新, 0 已跳過==========
更改:在出錯的語句前加上DWORD_PTR dw;
編譯PlayDVD
正在鏈接…
PlayDVD.obj : error LNK2001: 無法解析的外部符號「unsigned int (__stdcall* ATL::g_pfnGetThreadACP)(void)」 (?g_pfnGetThreadACP@ATL@@3P6GIXZA)
.\Debug_Unicode/PlayDVD.exe : fatal error LNK1120: 1 個無法解析的外部命令
生成日誌保存在「file://d:\DXSDK\Samples\C++\DirectShow\DVD\PlayDVD\Debug_Unicode\BuildLog.htm」
PlayDVD - 2 個錯誤,個警告
========== 全部重新生成: 0 已成功, 1 已失敗, 0 已跳過==========
編譯DVD
錯誤:
PlayDVD.obj : error LNK2001: 無法解析的外部符號「unsigned int (__stdcall* ATL::g_pfnGetThreadACP)(void)」 (?g_pfnGetThreadACP@ATL@@3P6GIXZA)
.\Debug/PlayDVD.exe : fatal error LNK1120: 1 個無法解析的外部命令
生成日誌保存在「file://d:\DXSDK\Samples\C++\DirectShow\DVD\PlayDVD\Debug\BuildLog.htm」
PlayDVD - 2 個錯誤,個警告
========== 生成: 1 已成功, 1 已失敗, 0 最新, 0 已跳過==========
無法解決
編譯Editing
錯誤:xmltltst.cpp
d:\DXSDK\include\uuids.h : warning C4819: 該文件包含不能在當前代碼頁(936)中表示的字符。請將該文件保存為Unicode 格式以防止數據丟失
.\xmltltst.cpp(291) : error C2065: 「k」: 未聲明的標識符
.\xmltltst.cpp(304) : error C2065: 「j」: 未聲明的標識符
生成日誌保存在「file://d:\DXSDK\Samples\C++\DirectShow\Editing\XTLTest\Debug_Unicode\BuildLog.htm」
XTLTest - 2 個錯誤,個警告
========== 生成: 6 已成功, 1 已失敗, 1 最新, 0 已跳過==========
更改:添加unsigned long k = 0 ;
unsigned long j = 0 ;
編譯PlayWndASF
錯誤:
playwndasf.obj : error LNK2001: 無法解析的外部符號「unsigned int (__stdcall* ATL::g_pfnGetThreadACP)(void)」 (?g_pfnGetThreadACP@ATL@@3P6GIXZA)
urllaunch.obj : error LNK2001: 無法解析的外部符號「unsigned int (__stdcall* ATL::g_pfnGetThreadACP)(void)」 (?g_pfnGetThreadACP@ATL@@3P6GIXZA)
.\Debug_Unicode/PlayWndASF.exe : fatal error LNK1120: 1 個無法解析的外部命令
生成日誌保存在「file://d:\DXSDK\Samples\C++\DirectShow\Players\PlayWndASF\Debug_Unicode\BuildLog.htm」
PlayWndASF - 3 個錯誤,個警告
========== 全部重新生成: 1 已成功, 1 已失敗, 0 已跳過==========
更改:
向數據庫依賴項中添加atlsd.lib
編譯demos(D:\DXSDK\Samples\C++\Demos)
錯誤:
StdAfx.cpp
d:\program files\microsoft directx sdk (april 2007)\include\d3d9types.h(1385) : warning C4819: 該文件包含不能在當前代碼頁(936)中表示的字符。請將該文件保存為Unicode 格式以防止數據丟失
d:\DXSDK\Samples\C++\common\include\D3DFile.h(56) : error C2061: 語法錯誤: 標識符「LPDIRECTXFILEDATA」
d:\DXSDK\Samples\C++\common\include\D3DFile.h(111) : error C2061: 語法錯誤: 標識符「LPDIRECTXFILEDATA」
d:\DXSDK\Samples\C++\common\include\D3DFile.h(113) : error C2061: 語法錯誤: 標識符「LPDIRECTXFILEDATA」
生成日誌保存在「file://d:\DXSDK\Samples\C++\Demos\Donuts4\Debug\BuildLog.htm」
Donuts4 - 3 個錯誤,個警告
========== 全部重新生成: 0 已成功, 1 已失敗, 0 已跳過==========
更改:在dsdfile.h的頂部加入#include 就可以
再次編譯出現錯誤:
.\..\Common\Src\d3dfile.cpp(151) : error C2664: 「D3DXLoadMeshFromXof」: 不能將參數1 從「LPDIRECTXFILEDATA」轉換為「LPD3DXFILEDATA」
與指向的類型無關;轉換要求reinterpret_cast、C 樣式轉換或函數樣式轉換
錯誤出處:
if( FAILED( hr = D3DXLoadMeshFromXof( pFileData, D3DXMESH_SYSTEMMEM, pd3dDevice,
&pAdjacencyBuffer, &pMtrlBuffer, NULL,
&m_dwNumMaterials, &m_pSysMemMesh ) ) )
更改:
if( FAILED( hr = D3DXLoadMeshFromXof((LPD3DXFILEDATA)pFileData, D3DXMESH_SYSTEMMEM, pd3dDevice,
&pAdjacencyBuffer, &pMtrlBuffer, NULL,
&m_dwNumMaterials, &m_pSysMemMesh ) ) )
編譯d3d
編譯dxtex
錯誤:
.\dxtexdoc.cpp(694) : error C2440: 「初始化」: 無法從「const char *」轉換為「TCHAR *」
轉換丟失限定符
.\dxtexdoc.cpp(6 : error C2440: 「初始化」: 無法從「const char *」轉換為「TCHAR *」
轉換丟失限定符
dxtexview.cpp
WINVER not defined. Defaulting to 0×0502 (Windows Server 2003)
d:\program files\microsoft directx sdk (april 2007)\include\d3d9types.h(1385) : warning C4819: 該文件包含不能在當前代碼頁(936)中表示的字符。請將該文件保存為Unicode 格式以防止數據丟失
MainFrm.cpp
WINVER not defined. Defaulting to 0×0502 (Windows Server 2003)
d:\program files\microsoft directx sdk (april 2007)\include\d3d9types.h(1385) : warning C4819: 該文件包含不能在當前代碼頁(936)中表示的字符。請將該文件保存為Unicode 格式以防止數據丟失
StdAfx.cpp
WINVER not defined. Defaulting to 0×0502 (Windows Server 2003)
d:\program files\microsoft directx sdk (april 2007)\include\d3d9types.h(1385) : warning C4819: 該文件包含不能在當前代碼頁(936)中表示的字符。請將該文件保存為Unicode 格式以防止數據丟失
正在生成代碼…
正在創建瀏覽信息文件…
Microsoft ?????????? Version 8.00.50727
Copyright (C) Microsoft Corporation. All rights reserved.
生成日誌保存在「file://d:\DXSDK\Samples\C++\Direct3D\DXTex\Debug\BuildLog.htm」
dxtex - 2 個錯誤,個警告
========== 生成: 0 已成功, 1 已失敗, 0 最新, 0 已跳過==========
錯誤地方: TCHAR* pszLeaf = strrchr(lpszPathName, 『\\』);
更改:TCHAR* pszLeaf = (TCHAR*)strrchr(lpszPathName, 『\\』);
編譯後出現錯誤:
正在鏈接…
CVTRES : fatal error CVT1100: 重複的資源。type:MANIFEST, name:1, language:0×0409
LINK : fatal error LNK1123: 轉換到COFF 期間失敗: 文件無效或損壞
更改:
將在Debug模式下編譯改為Release模式下編譯。
編譯Water(water.cpp)錯誤:
.\Water.cpp(7 : error C2039: 「Pass」: 不是「ID3DXEffect」的成員
更改: 直接去掉這句// m_pEffect->Pass(uPass)
\fur.cpp(424) : error C2039: 「Pass」: 不是「ID3DXEffect」的成員
d:\program files\microsoft directx sdk (april 2007)\include\d3dx9effect.h(316) : 參見「ID3DXEffect」的聲明
.\fur.cpp(550) : error C2039: 「Pass」: 不是「ID3DXEffect」的成員
d:\program files\microsoft directx sdk (april 2007)\include\d3dx9effect.h(316) : 參見「ID3DXEffect」的聲明
.\fur.cpp(567) : error C2039: 「Pass」: 不是「ID3DXEffect」的成員
d:\program files\microsoft directx sdk (april 2007)\include\d3dx9effect.h(316) : 參見「ID3DXEffect」的聲明
.\fur.cpp(585) : error C2039: 「Pass」: 不是「ID3DXEffect」的成員
d:\program files\microsoft directx sdk (april 2007)\include\d3dx9effect.h(316) : 參見「ID3DXEffect」的聲明
dxutil.cpp
更改:將Pass改成小寫pass。在Water編譯中也是錯誤的!!!
編譯VertexBlend(vertexblend.cpp)
錯誤:\vertexblend.cpp(312) : error C2065: 「i」: 未聲明的標識符
.\vertexblend.cpp(315) : error C2228: 「.v」的左邊必須有類/結構/聯合
.\vertexblend.cpp(315) : error C2228: 「.x」的左邊必須有類/結構/聯合
.\vertexblend.cpp(316) : error C2228: 「.blend」的左邊必須有類/結構/聯合
改正:for( INT i=0; i
- May 13 Tue 2008 00:50
SDK中Sample的編譯錯誤及其解決方案-2
close
全站熱搜
留言列表
發表留言