C2668 'memcpy': ambiguous call to overloaded function

在原有的项目中新加入了一个模块,需要借助OpenCV库打开摄像头,于是重新写了一个h/cpp文件组合,作为一个单独的模块。结果莫名其妙的,编译出错了——

// open_camera.h
#pragma once
#include
#include
using namespace std;
using namespace cv;
// 测试OpenCV是否配置成功
void test_capture();
//open_camera.cpp
#include"OpenCV_LearNing.h"
#include
using namespace cv;
void test_capture()
{
	VideoCapture capture(0);
	if (!capture.isOpened()) {
		cout << "open camera failed!" << endl;
	}
	else {
		Mat frame;
		int index = 300;
		while (index--) {
			capture >> frame;
			imshow("VIDEO", frame);
			waitKey(1000 / 30);
		}
		destroyAllWindows();
	}

}

C2668 'memcpy': ambiguous call to overloaded function_第1张图片

重载函数二义性,不应该啊,每个头文件都加入了#pragma once 函数定义更是不可能重复。

显然是OpenCV部分出了问题,可是用了OpenCV这么多年,这么写一点毛病也没有啊……

造成这个问题,一般先检查#include,是否造成重复包含,然后看自己声明的函数是否存在重载二义性。

但我这个项目里面都没这个问题。

大胆的猜测一下,是不是这个OpenCV版本(3.4)自身出问题,或者我下载的库有问题,于是下了OpenCV3.1的库,结果……好了

真是白折腾了半天。

你可能感兴趣的:(debug)