vc6.0 不支持MFC了

来源:百度知道 编辑:UC知道 时间:2024/06/06 19:48:19
在做一个MFC程序时,本来好好的,忽然连接处错了,编译没错,而代码没改,刚刚还可以运行。
于是试了新建几个MFC程序,直接编译,都出错,指向#include "stdafx.h"
: fatal error C1083: Cannot open precompiled header file: 'Debug/d.pch': No such file or directory

重装了VC,重起了机器,问题照旧,急求解
这是我原来的程序的错误,即使我把自己加的代码全部去掉还是如此,后来新建的MFC程序又好了,我直接点GO的那个按钮,成功后点编译也没错误了
--------------------Configuration: RsaDemo - Win32 Debug--------------------
Linking...
RsaDemoDlg.obj : error LNK2005: "unsigned __int64 __cdecl PowMod(unsigned __int64,unsigned __int64,unsigned __int64)" (?PowMod@@YA_K_K00@Z) already defined in RsaDemo.obj
RsaDemoDlg.obj : error LNK2005: "long __cdecl RabinMillerKnl(unsigned __int64 &)" (?RabinMillerKnl@@YAJAA_K@Z) already defined in RsaDemo.obj
RsaDemoDlg.obj : error LNK2005: "long __cdecl RabinMiller(unsigned __int64 &,long)" (?RabinMiller@@YAJAA_KJ@Z) already defined in RsaDemo.obj
。。。省略。。
RsaDemoDlg.obj : error LNK2005: "struct RSA_PARAM_Tag __

最近正好在弄VC,还算有点心得,以上两个问题我都可以试着回答

第一个最简单,这里需要知道的是知识是预编译头文件,简单地说,就是把所有不会变动的程序代码全都放在一个文件里,编译好这个文件后,给出这个文件的.h头文件,而其它想要用到上述程序代码的地方只需要include这个.h头文件就可以,而不需要每次都再编译一次

上面讲得可能条理不清,不过没关系,知道怎么解决就行,解决方法是,找到StdAfx.cpp文件,打开这个文件,再点工具栏上的编译,等几秒钟,编译完成。这时再编译其它文件,肯定就不会出现上述错误了。

第二个问题看上去是因为重定义造成的,形成这个问题的主要原因是你在RsaDemo和RsaDemoDlg里面都include了同一个头文件,造成了循环引用。好好检查一下吧。

先编译stdafx.h再编译主程序的cpp文件