我的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;,正如其他人所建议的那样,但没有成功。
答案 0 :(得分:1)
通过删除以下所有案例解决问题:
使用命名空间cv
出现。但是我必须使用cv命名空间在代码中出现的所有opencv相关函数的前面添加'cv ::'。
C1189错误与此无关。
答案 1 :(得分:1)
我刚刚移动opencv包含并使用名称空间cv旁边的所有包含和在函数和main之前及其解决(在所有包含和使用之后)
答案 2 :(得分:0)
我尝试了上述操作,但仍然看到此错误。对我来说,解决此问题的方法是在所有opencv标头都包含在内之前移#include <Windows.h>
。
答案 3 :(得分:0)
限制名称空间的上下文也可以。那就是:
namespace cv
{
....
}
此解决方案避免添加繁琐的'cv ::'。