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 <windows.h>语句后报错。A.cpp中包含了很多自定义的头文件例如B.h,C.h,D.h等,其中应该某个文件包含了using namespace cv;但是协作工作,改动他人代码很麻烦。

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

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值