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



我认为自己对MFC很熟悉,但最近遇到了一个问题,我无法在线找到解决方案,也无法自己追踪。。。

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

问题是,这不是代码腐烂,实际上我的构建环境有问题。由于各种原因,我使用VS2008,这无论如何都不应该成为问题的焦点。

当我创建一个DEFAULT C++MFC(Native)应用程序时,只需创建项目,然后在向导上点击FINISH,然后BUILD,编译器在编译第一个CPP文件时就会出现错误。编译stdafx.cpp似乎很好,它包括了所有的AFX头,但最终发生的是我得到了一个错误,即"CDocument"未定义。。。现在,我知道足够的MFC,这不应该是…

我检查了我所有的路径,包括INCLUDE、LIB等等,它们都指向了本质上的

c:Program FilesMicrosoft Visual Studio 9.0VCATLMFCINCLUDE;c:Program FilesMicrosoft Visual Studio 9.0VCINCLUDE

以及一些针对Windows SDK的includes,等等。我得到的错误显示AFXWIN.H来自ATLMFC\INCLUDE文件夹。

所以,在这一点上,我不得不假设我可能有其他问题?有些东西更新了一些MFC DLL或LIB,它们可能不应该在哪里?

当我尝试从VS2008 Team Foundation DVD(en_visual_studio_Team_system_2008_Team_suite_x64wow_DVD_X##-####)安装ISO或DVD时,我只是在尝试启动修复模式时出错。。。

我不知道有任何扩展日志文件可以帮助追踪这件事。(至于在尝试"修复"我的VS2008安装时,安装程序中的错误是什么,至少…)

我在Win7、x86上运行,没有启用UAC。有其他人遇到过这样的问题吗?

谢谢大家。

我发现了这个问题,它太糟糕了,我甚至不想回答这个问题,但我觉得我更好,因为这可能发生在其他人身上。

整个问题发生在我编辑一个根本不使用MFC的项目时,但它被加载到了一个确实使用MFC的工程的WORKSPACE中。有一次,我为Document到XmlDocument做了一个"在文件中查找和替换"。嗯,我几乎不知道,它会进入我的INCLUDE路径,并更新那里的文件。因此,我的MFC"CDocument"在afxwin.h文件中被更改为"CXmlDocument"。(以及afxwin.inl)。我花了很多时间才找到这个,因为大约6个月前,我从那个项目转到了另一个项目。我回来工作的原始项目,使用MFC和Wadaya知道。错误代码。从那以后,我的电脑发生了很多变化,所以我想安装了一些新版本的MFC,或者其他什么。因此,我在VS2010的include路径中搜索CXmlDocument,但它并不存在!所以,我想,"好吧…CXmlDocument不是一个合法的MFC类。"所以,我在VS2010中找到了CDocument的声明位置,并将其与VS2008中的内容进行了匹配。就在那时,我开始意识到发生了什么。因此,我用CDocument和BAM替换了CXmlDocument的所有实例!代码编译得很好。。。

所以,今天给孩子们的教训是,如果你在文件中进行搜索和替换,要非常小心你使用的设置,并密切注意修改了哪些文件!

我很抱歉大家读到这个问题并浪费了时间,但我非常感谢大家在这方面帮助我。谢谢你们。

最新更新