最近用C++6.0编了一些MFC的程序,在此汇总整理了编程时主要遇到error与bug。有任何错误和建议,可在下方留言指正。谢谢!
注:红色为网上搜索的解决方式,红色粗体为自己检验有效方法和部分原创方法
1.C++6.0在WIN7,WIN8,WIN10上安装时,使用“打开文件”,程序崩溃
解决方法:http://www.mamicode.com/info-detail-517499.html
2. assistantX安装以及程序窗口无法关闭问题解决
解决方法:http://blog.sina.com.cn/s/blog_a4c12c920101a21n.html
3.MFC窗体无法显示问题
把debug文件夹删掉,再重新编译。
4.fatalerror C1083: Cannot open precompiled header file: 'Debug/**.pch': No such fileor directory
在网上搜集了一下,这个错误是预编译文件的设置造成的,于是总结了几种尝试的方法:
1)单独编译StdAfx.cpp。
2)编译所有(即按Ctrl+F7)。
3)在工程-设置-c++-最下面的工程选项里去掉××.pch文件。
4)在工程-设置-c++-在分类里选择预编译头文件,选择自动使用预补偿页眉,或者选择不使用预补偿头。
5)第一个想法是需要 re-compile 一下,如果不行,可以把pre-compile header (预编译头)的设置游 /Yu改成 /Yc试试。
注意:一般尝试前两步就够了,就是先单独编译下StdAfx.cpp。
5.cannotopen file ".\Debug\test.res"
1)在工具栏中 先选清除解决方案 然后再选重新生成解决方案
2)直接把debug文件夹删掉 再重新生成
3)程序执行成功,证明确实是电脑这使用者权限问题,而造成问题的出现。
可以通过用管理员身份开启vc++6.0程序,或者赋予使用者有关文件的管理权。
6.mfco42d.dll0xC0000005:accessviolation
调试错误停在constCOleDispatchDriver&COleDispatchDriver::operator=(constCOleDispatchDriver& dispatchSrc)内部
1.运行C:\Program Files (x86)\Microsoft Visual Studio下的vc6通用补丁.reg
2.用管理员身份运行VC++6.0
3.定义变量时类型错误,例如:BOOL ThreadFlag;应修改为bool ThreadFlag;
还有定义变量的位置也有一定关系
4.将Debug删除,重新编译,发生cannot open file".\Debug\test.res"错误,关闭程序并重新以管理员身份运行
5.在甲电脑,就是笔者的电脑,程序可以正常运行;但是在乙电脑,就是同事的电脑,程序运行却出现(MFCO42D.DLL):0xC0000005:Access Violation错误信息。
在甲的机器上,链接的是MFCO42D.DLL的6.0.8168.0版本
在乙的机器上,链接的是MFCO42D.DLL的6.0.8972.0版本
而将MFCO42D.DLL放到了笔者运行程序的Debug目录,注意:该库的版本的是6.0.8168.0版本。
程序每次运行的时候:就会首先从Debug目录查找MFCO42D.DLL动态链接库,加载运行。
在乙电脑上,编译的是MFCO42D.LIB的6.0.8972.0版本,而加载的是Debug目录下的6.0.8168.0版本的MFCO42D.DLL动态链接库,版本不匹配,故而运行出错。
解决方案:
1.将运行程序的Debug目录下的MFCO42D.DLL的文件删除掉;
2.让甲乙两台电脑的VC6开发环境一样,都是VC6+SP6补丁。