VS工程中[error C2872: “ACCESS_MASK”: 不明确的符号]的解决方法

VS编译工程,在将opencv2.4升级为opencv3.1时,遇到报错error C2872: “ACCESS_MASK”: 不明确的符号,通过实验发现将冲突的windows.h单独放在cpp文件,即可解决该问题。具体信息如下:

1>C:\Program Files (x86)\Windows Kits\8.0\Include\um\winnt.h(8534): error C2872: “ACCESS_MASK”: 不明确的符号
1>          可能是“C:\Program Files (x86)\Windows Kits\8.0\Include\um\winnt.h(8533) : DWORD ACCESS_MASK”
1>          或       “D:\SDK_compile_lib\OpenCV310\include\opencv2/core/mat.hpp(63) : ACCESS_MASK”

上网查询该问题解决方法,有两种答案(网址:http://blog.csdn.net/sdlkjtz/article/details/69260382):

一说是using namespace cv和windows中的名称冲突,建议不要使用using namespace cv, 改用cv::Mat;

二说是#include头文件重复

原本打算尝试上述方法,但工程实在过大,于是在将导致该问题的A.cpp文件分段注释的过程中,发现在添加了#include 语句后报错。A.cpp中包含了很多自定义的头文件例如B.h,C.h,D.h等,其中应该某个文件包含了using namespace cv;但是协作工作,改动他人代码很麻烦。

解决方法如下:将需要#include 的函数和#include 单独放在E.cpp, 函数接口放在E.h,A.cpp只包含E.h即可,这样就不会出现两者的冲突问题。

你可能感兴趣的:(C++,opencv3)