您的位置:首页 > 其它

DirectShow 在vs2005中的问题解决之其它类文件编译错误问题处理

2008-07-21 16:38 661 查看
编译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_,NUMBEROFINPUTS,NUMBEROFOUTPUTS>::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_,NUMBEROFINPUTS,NUMBEROFOUTPUTS>”的引用
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_,NUMBEROFINPUTS,NUMBEROFOUTPUTS>::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_,NUMBEROFINPUTS,NUMBEROFOUTPUTS>”的引用
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 <dxfile.h>就可以
再次编译出现错误:
./../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模式下编译。
编译Waterwater.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<dwNumVertices; i++ )
{
// Set the blend factors for the vertices
FLOAT a = ( pVertices[i].v.x - fMinX ) / ( fMaxX - fMinX );
pVertices[i].blend = 1.0f-sinf(a*D3DX_PI*1.0f);
}///INT

问题②
c:/Program Files/DXSDK/Extras/DirectShow/Samples/C++/DirectShow/BaseClasses/ctlutil.h(278) : error C4430: 缺少类型说明符- 假定为int。注意: C++ 不支持默认int

COARefTime(LONG);
operator=(LONG);

解决方案:改为
COARefTime(LONG);
int operator=(LONG);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐