C2870 模糊符号错误
C2870 ambiguous symbol error
我的 Visual Studio 2015 C++ 项目出现错误 39 次,其中指出:
C2872 'ACCESS_MASK': ambiguous symbol
我的问题是发生这些问题的“文件”都是 windows 文件,例如:
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 ;
是否有不止一次“使用命名空间...”的错误?
我遇到的唯一其他错误也来自 winnt.h 文件,我不确定它是否相关但包含它以防万一,如下所示:
C1189 #error: "No Target Architecture"
我已经尝试更改包含的 windows 文件,以及“使用命名空间 cv”,正如其他一些人所建议的那样,但没有成功。
通过删除所有情况解决了问题:
using namespace cv
出现了。但是,我确实必须在使用 cv 命名空间的代码中出现的所有 opencv 相关函数的前面添加 'cv::'。
C1189 错误与此无关。
我刚刚将 opencv includes 和 using namespace cv 移动到所有 includes 旁边和 functions 之前,main 及其已解决(在所有 includes 和 usings 之后)
我试过上面的方法,但仍然看到这个错误。为我修复的是在所有 opencv header 包含之前移动 #include <Windows.h>
。
限制命名空间的上下文也有效。即:
namespace cv
{
....
}
此解决方案避免了添加非常繁琐的 'cv::'。
我的 Visual Studio 2015 C++ 项目出现错误 39 次,其中指出:
C2872 'ACCESS_MASK': ambiguous symbol
我的问题是发生这些问题的“文件”都是 windows 文件,例如:
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 ;
是否有不止一次“使用命名空间...”的错误?
我遇到的唯一其他错误也来自 winnt.h 文件,我不确定它是否相关但包含它以防万一,如下所示:
C1189 #error: "No Target Architecture"
我已经尝试更改包含的 windows 文件,以及“使用命名空间 cv”,正如其他一些人所建议的那样,但没有成功。
通过删除所有情况解决了问题:
using namespace cv
出现了。但是,我确实必须在使用 cv 命名空间的代码中出现的所有 opencv 相关函数的前面添加 'cv::'。
C1189 错误与此无关。
我刚刚将 opencv includes 和 using namespace cv 移动到所有 includes 旁边和 functions 之前,main 及其已解决(在所有 includes 和 usings 之后)
我试过上面的方法,但仍然看到这个错误。为我修复的是在所有 opencv header 包含之前移动 #include <Windows.h>
。
限制命名空间的上下文也有效。即:
namespace cv
{
....
}
此解决方案避免了添加非常繁琐的 'cv::'。