关于无法解析的外部符号,有很多原因,但大部分都没有提到下面的一个原因。在开源项目基础上添加自己的.cpp文件时,因为有的是c编写,所以直接调用会出现标题上的错误,原因其实很简单,c++调用函数时以c++编译,所以c中的函数无法解析。解决方法就是在.c的头文件.h中加入下面的代码:
#ifndef GREYMAP_H
#define GREYMAP_H //避免重复定义
#ifdef __cplusplus
extern "C" {
#endif //添加
#include <stdio.h> //添加的头文件
#include <stdlib.h>
#include <stddef.h>
//声明各种函数
#ifdef __cplusplus
} /* end of extern "C" */
#endif
#endif
另外,opencv提供的是c++接口api,所以也会出现错误:导致错误过多,intellisense引擎无法正常工作的报错,把.c文件改成.cpp就好了。