VS2005调试错误

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字符集改为多字节字符集

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值