1.VS2005调试时出现:无法启动程序"C:/PROGRA~1/MOZILL~1/FIREFOX.EXE".
解决方法:重启PDA,重新打开VS2005
2.fatal error LNK1169: 找到一个或多个多重定义的符号
dllmodul.obj : error LNK2005: 已经在 packet.obj 中定义
解决方法
1.在.h里的函数声明前加 inline
2.在项目->属性->链接器->命令行->附加选项中加 /force
3.没有找到MFC80UD.DLL,怪异问题解决
(1)如果不选"系统菜单"和"关于菜单"就不会有这个问题!
(2)如果在"工程属性->配置属性->常规->字符集"选"使用多字节字符集"也不会出这个问题!
(3)好像是删除所有的中间文件,(具体一点说,就是删除./(工程文件)/Debug里的文件和.ncb),
再"重新生成解决方案文件...",可能可以.
(4)clean关闭vs,打开rebuild应该就可以了,我的很少遇到。遇到之后这样就解决了。不行就多试几次。
(5)linker-》manifest-file-》Generate Manifest: Yes
(6)Manifest搞的鬼,然后修改项目属性,清单工具 中的 输入输出 把嵌入清单文件选否.然后编译,链接 运行,成功
4.怪异问题:ambiguous call to overloaded function
函数调用有二义行。
解决方法: 在参数前加类型转换
5.怪异问题: C++ does not support default-int
具体的在工程选项中的c+ +/Command Line中添加/wd4430即可。
双击baseclasses.sln打开,提示我们需要转换工程,按提示转换就是了,编译
提示错误:
1>D:/Microsoft Visual Studio 8/VC/PlatformSDK/include/winnt.h(222) : error C2146: syntax error : missing ';' before identifier 'PVOID64'
1>D:/Microsoft Visual Studio 8/VC/PlatformSDK/include/winnt.h(222) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>D:/Microsoft Visual Studio 8/VC/PlatformSDK/include/winnt.h(5940) : error C2146: syntax error : missing ';' before identifier 'Buffer'
1>D:/Microsoft Visual Studio 8/VC/PlatformSDK/include/winnt.h(5940) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>D:/Microsoft Visual Studio 8/VC/PlatformSDK/include/winnt.h(5940) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>d:/DX90SDK/Samples/C++/DirectShow/BaseClasses/ctlutil.h(278) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
第一类问题的解决:错误发生在:operator=(LONG);函数定义中,这是因为在VC6中,如果没有显示的指定返回值类型,编译器将其视为默认整 形;但是vs2005不支持默认整形,解决这个问题不能修改每个没有显示指示返回值类型的函数地方,可以用wd4430来解决;具体的在工程选项中的c+ +/Command Line中添加/wd4430即可。
6."没有找到MFC80D.DLL"问题的解决方法
用VS2005调试一个程序,出现“没有找到MFC80D.DLL……”的提示使程序不能运行,删掉Debug文件夹重新编译问题依旧,上网查了一下,有说是vs路径的原因,有说是vs没装好的原因。
在“启动调试F5”的工具图标右侧有一栏“解决方案配置”,无意中将其中的“Debug”改为“Release”,F5通过,运行正常,项目目录下生成“Release”文件夹,Debug方式生成的“Debug"文件夹是无用的。原因如下:
DEBUG和RELEASE 版本差异及调试相关问题:
I. 内存分配问题
1. 变量未初始化。下面的程序在debug中运行的很好。
thing * search(thing * something)
BOOL found;
for(int i = 0; i < whatever.GetSize(); i++)
{
if(whatever->field == something->field)
{ /* found it */
found = TRUE;
break;
} /* found it */
}
if(found)
return whatever;
else
return NULL;
而在release中却不行,因为debug中会自动给变量初始化found=FALSE,而在release版中则不会。所以尽可能的给变量、类或结构初始化
7.Warning C4819: save the file in unicode format to prevent data loss.
中文意思是:该文件包含不能在当前代码页中表示的字符,请将文件保存为Unicode格式,以防止数据丢失。
一般来说,这个警告没有什么影响。要想去掉这个警告的方法有:
(1)转换Code文件为Unicode格式;
(2)在Project -> Properties -> Configuration Properties -> C/C++ -> Advance 的 Disable Specific Warnings 中添加相应的警告 编号:4819;
(3)或找出不符合Unicode格式的文件,然后在该文件的开始处加入下面的语句:
# pragma warning (disable:4819)
8.LINK : fatal error LNK1104: 无法打开文件“quartz.lib”
解决方法:项目——项目属性——链接器——常规——附加库目录中添加DirectShow的SDK安装文件的lib库地址:C:/DXSDK/Lib
regsvr32 C:/DXSDK/Samples/C++/DirectShow/Filters/Grabber/Debug_Unicode/grabber.ax
9.在调试DIRECTSHOW截图程序中出现隐形错误:断点处在:CString类型的TimeofCapture需要转换为LPCSTR类型
调试方法:将TimeofCapture直接放在LPCSTR类型的位置上,并设置:项目——属性——配置属性——常规——字符集中系统默认的UNICODE字符集改为多字节字符集
VS2005调试错误
最新推荐文章于 2022-01-05 15:18:14 发布