生成vs项目解决方案时出现了错误如下:
C1020: 意外的 #endif
普遍解决方案
各种百度,给出的解决方案都是在.cpp文件第一条语句加:#include “stdafx.h”,
报错写法:
#include "cv.h"
#include "cxcore.h"
#include "highgui.h"
#include "stdafx.h"
正确写法:
#include "stdafx.h"//放在第一条语句
#include "cv.h"
#include "cxcore.h"
#include "highgui.h"
此种解决方案的原因:代码使用了预编译头,编译器认为,所有在指令#include "stdafx.h"前的代码都是预编译的,它跳过#include "stdafx. h"指令,使用projectname.pch编译这条指令之后的所有代码。所以在使用预编译头的情况下,应将 #include "stdafx.h"放在第一条语句,以防编译会跳过其他代码。
本文解决方案
上述解决方案适用于Windows平台且需使用预编译头或者对是否使用预编译头没有要求的情况。当觉得预编译头比较麻烦,用不用预编译头都可或者要将项目从Windows移植到Linux平台时(#include "stdafx.h"在linux下出错),可以设置不用预编译头。
设置不用预编译头方法:
- 右键相应的.cpp文件-属性
- 找到“c/c++”-预编译头-使用
设置好后,再编译项目即可。