c2061 dword 语法错误_C++调试时的错误例子及解决方法

-.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;

7.编译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中的库文件。

编译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

{

// 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);

Activex 使用DirectShow的问题解决方案

下面的编译问题:

strmbasd.lib(dllentry.obj) : error LNK2001: unresolved external symbol "class CFactoryTemplate * g_Templates" (?g_Templates@@3PAVCFactoryTemplate@@A)

strmbasd.lib(dllentry.obj) : error LNK2001: unresolved external symbol "int g_cTemplates" (?g_cTemplates@@3HA)

解决方法:

在xxxctrl.h中加入下面的代码

/

// DllGetClassObject

extern "C"

STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv)

{

AFX_MANAGE_STATE(AfxGetStaticModuleState());

return AfxDllGetClassObject(rclsid, riid, ppv);

}

/

// DllCanUnloadNow

extern "C"

STDAPI DllCanUnloadNow(void)

{

AFX_MANAGE_STATE(AfxGetStaticModuleState());

return AfxDllCanUnloadNow();

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值