今天在使用Markup读取xml文件时,加入Markup的.h和cpp文件后,即出现了这个问题,后台在网上查了之后,说是预编译头文件的问题。
大致总结如下:
预编译头文件,既是指通过stdafx.h文件,预编译很多的标准头文件,如#include <afxwin.h> #include <afxext.h>,这样可以不用在每一个文件中去包含着两个文件
避免了重复包含的好处,同时,直接使用预编译后的结果,也可以提高运行速度等。预编译后生成的文件是项目下的pch文件。
编译器通过一个头文件stdafx.h来使用预编译头文件。stdafx.h这个头文件名是可以在project的编译设置里指定的。
编译器认为,所有在指令#include "stdafx.h"前的代码都是预编译的,它跳过#include "stdafx. h"指令,使用.pch文件编译这条指令之后的所有代码。
因此所有的mfc项目中.cpp文件开头的第一句都是#include"stdafx.h".我们可以看一下。
而我自己新加入的Markup.cpp第一句没有,我加上后就通过了。
同时看到有的时候这样处理可能也不行,需要在Settings,选择C/C++选项卡,从Category组合框中选中Precompiled Headers,选择Not Using Precompiled headers。