令我吐了一下午血的无法打开预编译头文件问题

来源:互联网 发布:淘宝北京时间 编辑:程序博客网 时间:2024/05/16 11:33

环境:VS2008

语言:C++

     下午出了一个非常可恶的问题,我的一个基于MFC 对话框的程序因为预编译头文件stdafx.h的原因始终无法编译通过。 由于程序整体是需要预编译头文件的。因此工程内所有cpp文件通通都包括了#include stdafx.h。

     我自己写的文件放在工程文件夹下自建的一个文件夹里。比如工程名DynamicPathPlan, 我的文件SamplePredictModel.h、SamplePredictModel.cpp放在 "C:/当前的实际机器人代码/DynamicPathPlan_SelfLoc/DynamicPathPlan/SelfLoc"文件夹里面。而MFC自动生成的stdafx.h是放在工程文件夹下面。同时在SelfLoc文件夹下面还有若干自己写的类文件。其他的类中cpp文件也都有#include stdafx.h,而且都没有错。独独是这么一个文件SamplePredictModel.cpp 中报错:"fatal error C1083: 无法打开包括文件:“Stdafx.h”: No such file or directory"( 我不明白为什么它报错,同一目录下其他的文件都没有报错,当然如果在同目录这些正常的文件上尝试通过右击"#include stdafx.h"以打开stdafx.h是不能打开的)。

     如果在工程属性中设置不使用预编译头当然是可以避免这一问题的,但是仅仅因为这一个文件就要去掉所有其他文件中的stdafx.h 实在不划算,而且对话框文件中还是需要stdafx.h的。因此工程部使用预编译头是不行的。 我尝试将包含语句改为 #include ../stdafx.h VC报错说是我没有添加stdafx.h。失败。网上找了n多看,都不得要领。 正好想到解决方案管理器中可以给每个文件设置是否使用预编译头。 因此将整个工程设为使用预编译头,再将SamplePredictModel.cpp 单独设为不使用预编译头。然后删掉#include ../stdafx.h。 于是。。。。整个世界清静了。。。。编译通过。 结论1. 工程属性中的预编译头设置相当于给所有工程中的文件都进行了同样设置。 然而我们自己给文件再更改它的设置,从而实现了仅单个文件不使用预编译头。 原创,,妈的打字打得烦。

原创粉丝点击