C++调试时的错误例子及解决方法

错误例子: 
1.CVTRES : fatal error CVT1100: 重复的资源。type:MANIFEST, name:1, language:0×0409 
LINK : fatal error LNK1123: 转换到COFF 期间失败: 文件无效或损坏 
解决方案: 
我的编译环境是Microsoft Visual Studio 2005 
将所有工程的属性(工程全选->右击->属性)->配置属性->清单工具->输入输出->嵌入清单,选择“否”,然后编译,就OK了。 
2.针对出现未声明标识符的错误进行解析。 
错误例子:for( m=0; m<pDevice->dwNumModes; m++ ) 

if( pDevice->modes

.Width==640 && pDevice->modes

.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_,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 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值