C2870符号歧义错误
C2870 ambiguous symbol error
我的Visual Studio 2015 c++项目出现了一个错误,发生了39次,其中声明:
C2872 'ACCESS_MASK':歧义符号
我的问题是这些发生的"文件"都是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",正如其他人所建议的,但没有成功。
删除以下所有情况解决了这个问题:
使用命名空间cv
出现了。然而,我必须在使用cv命名空间的代码中出现的所有opencv相关函数的前面添加'cv::'。
C1189错误与此无关
我刚刚移动了opencv include和使用命名空间cv旁边的所有包含和之前的函数和主要及其解决(毕竟包括和使用)
我尝试了上面的,仍然看到这个错误。为我修复的是在所有opencv头文件包括。
#include <Windows.h>
。限制名称空间的上下文也可以。即:
namespace cv
{
....
}
这个解决方案避免了添加'cv::',这是非常繁琐的。
相关文章:
- C++17 中的歧义错误(模板模板参数和默认参数问题)
- 运算符的歧义错误<<自定义 std::ostream 子类中的重载
- 了解函数错误的歧义新声明
- 在C 中,静态成员函数是否继承了?如果是,为什么没有出现歧义错误
- 在 c++ 中使用重载的歧义错误
- 转换 - 错误 E2015,AnsiString(char) 和 AnsiString(short) 之间的歧义
- C++代码中出现歧义错误
- 可变模板和混合的歧义错误
- 错误:"std::copy "之间的重载歧义
- c++操作符string和char*导致歧义错误
- 使用c++ Builder 10 Seattle有很多歧义错误
- c++歧义符号错误
- 函数重载时出现歧义错误
- c++矢量错误,显示变量有歧义-我已经尝试了一切仍然没有希望
- 为什么这两个构造函数一起不会产生歧义错误?
- C2870符号歧义错误
- 由于模板函数声明中存在歧义而导致错误
- 与第三方头文件相关的C++Builder歧义错误
- 模板类相互使用会产生歧义错误
- 错误:对旧声明“double-round(double)”存在歧义