C2870模糊符号错误

时间:2016-09-06 12:16:21

标签: c++ windows visual-studio include ambiguous

我的Visual Studio 2015 C ++项目出现错误,发生了39次,其中指出:

  

C2872' ACCESS_MASK':模棱两可的符号

我的问题是发生这些文件的所有文件都是以下文件:

  

WINNT.H

     

WINUSER.H

     

文件Winreg.h

其中一个项目.h文件的include部分如下:

#pragma once;
#include <opencv/cv.h>
#include <opencv/cxcore.h>
#include <opencv/highgui.h>
#include <opencv/cvaux.h>//Background modeling header files

#include "opencv2/imgcodecs.hpp"
#include "opencv2/imgproc.hpp"
#include "opencv2/videoio.hpp"
#include <opencv2/highgui.hpp>
#include <opencv2/video.hpp>
#include <windef.h>
using namespace cv; 

和另一个.h文件包含以下内容:

#include <opencv2/opencv.hpp>
#include <XnCppWrapper.h>//OpenNI
using namespace cv;  

#include <iostream>  
#include <stdlib.h>
using namespace std ; 

是否有错误&#34;使用命名空间......&#34;不止一次?

我遇到的唯一其他错误也来自winnt.h文件,我不确定它是否相关但是包含它以防万一,它如下:

  

C1189 #error:&#34;没有目标架构&#34;

我尝试更改包含的Windows文件,以及使用命名空间cv&#34;,正如其他人所建议的那样,但没有成功。

4 个答案:

答案 0 :(得分:1)

通过删除以下所有案例解决问题:

  

使用命名空间cv

出现。但是我必须使用cv命名空间在代码中出现的所有opencv相关函数的前面添加'cv ::'。

C1189错误与此无关。

答案 1 :(得分:1)

我刚刚移动opencv包含并使用名称空间cv旁边的所有包含和在函数和main之前及其解决(在所有包含和使用之后)

答案 2 :(得分:0)

我尝试了上述操作,但仍然看到此错误。对我来说,解决此问题的方法是在所有opencv标头都包含在内之前移#include <Windows.h>

答案 3 :(得分:0)

限制名称空间的上下文也可以。那就是:

namespace cv
{
....
}

此解决方案避免添加繁琐的'cv ::'。