编译向导生成的MFC应用程序时出错;缺少CDocument声明

时间:2012-12-17 22:05:07

标签: c++ visual-studio-2008 mfc

我认为自己对MFC非常敏锐,但我最近遇到了一个问题,我无法找到在线修复,也没有能够自己追踪它......

问题是,我在今年年初写回的一些代码由于出现了iOS项目而被搁置,所以我花了大约5个月的时间来写这个,现在我已经准备好了回到上一个项目,但它似乎遭受了Code Rot。

问题是,它不是Code Rot,我的Build Env实际上存在问题。我正在使用VS2008,出于各种原因,不管怎么说这不应成为问题的焦点。

当我创建一个DEFAULT C ++ MFC(Native)应用程序时,只需创建项目,然后在向导上点击FINISH,然后编译它,我在编译器编译第一个CPP文件时出错。它很好地编译stdafx.cpp,其中包括所有AFX标题,但最终发生的事情是我得到一个“CDocument”未定义的错误......现在,我知道MFC应该不会这样做。 ..

我已经检查了所有路径,包括INCLUDE,LIB等,它们都指向基本上

c:\Program Files\Microsoft Visual Studio 9.0\VC\ATLMFC\INCLUDE;c:\Program Files\Microsoft Visual Studio 9.0\VC\INCLUDE

除了Windows SDK的一些包括,等等。我得到的错误是显示AFXWIN.H来自ATLMFC \ INCLUDE文件夹。

所以,到目前为止,我不得不假设我还有别的错吗?有些东西更新了一些MFC DLL或LIB,它们可能不应该有吗?

当我尝试从我的VS2008 Team Foundation DVD(en_visual_studio_team_system_2008_team_suite_x86_x64wow_dvd_X ## - ####)安装ISO或DVD时,我在尝试启动修复模式时遇到错误...

我不知道有任何扩展日志文件可能有助于跟踪此问题。 (至于尝试“修复”我的VS2008安装时,安装程​​序中的错误,至少......)

我正在运行Win7,x86,没有启用UAC。还有其他人有这样的问题吗?

谢谢你们。

1 个答案:

答案 0 :(得分:0)

我发现了问题,而且非常糟糕,我甚至不想回答这个问题,但我认为我更好,因为这可能发生在其他人身上。

当我编辑完全没有使用MFC的项目时,发生了整个问题,但它被加载到DID使用MFC的项目的WORKSPACE中。有一次,我为文档到XmlDocument做了“在文件中查找和替换”。嗯,我知道的很少,它会转到我的INCLUDE路径,并在那里更新文件。所以,我的MFC“CDocument”在afxwin.h文件中变成了“CXmlDocument”。 (以及afxwin.inl)。我花了很多时间来寻找这个问题,因为大约6个月前,我已经把这个项目转移到了另一个项目上。我回来研究使用MFC和waddaya知道的ORIGINAL项目。代码腐。那么,从那时起我的电脑发生了很多变化,所以我想到了一些新版本的MFC已经安装,或者其他什么。所以,我去了VS2010的包含路径搜索CXmlDocument,它不存在!所以,我想,“好吧...... CXmlDocument不是一个合法的MFC类。”所以,我在VS2010中找到了声明CDocument的位置,并将其与VS2008中的内容进行了匹配。就在那时我开始意识到发生了什么。所以,我用CDocument和BAM替换了CXmlDocument的所有实例!代码编译得很好......

所以,今天孩子们的教训是,如果你在文件中进行搜索和替换,请小心谨慎使用你所使用的设置,并注意关注哪些文件被修改!

我很抱歉所有人都能阅读这个问题并且在任何时候阅读它都会浪费,但是我很感激帮助我的尝试。谢谢你们/ gals。