最近接手了一个项目,有一些现存代码。在调试的时候出现了一些的问题,问题的源头在某个子模块里,估计应该不是原项目团队的人写的,是后来另外的人加入进去的。
主要的问题有两个:
1、库版本的不兼容
项目整体有一个头文件选择库的版本,而该子模块里又重新定义了一遍。
项目整体:
#define OPENCV_249
#ifdef OPENCV_249
#ifdef DEBUG
#pragma comment(lib,"opencv_highgui249d.lib")
...
子模块
#define OPENCV_244
#ifdef OPENCV_244
#ifdef DEBUG
#pragma comment(lib,"opencv_highgui244d.lib")
从而报错:
LINK : fatal error LNK1104: 无法打开文件“opencv_highgui244.lib”
2、头文件的不兼容
项目整体已经定义了,子模块又重新定义一遍
项目整体:
#define IMG_TYPE CV_32FC1
子模块
const int IMG_TYPE = CV_32FC1;
从而报错:
error C2106: “=”: 左操作数必须为左值
虽然都是些微不足道的问题,但是平时嵌入到别人的项目还是尽量按照别人的框架来编码