尝试记录下编译中遇到的一些问题
cmake合集
*.cpp:*:*: error: ‘*’ was not declared in this scope
看下面的例子:
$ make -j4
[ 50%] Building CXX object CMakeFiles/YOLOv5ncnn-vulkan.dir/src/YOLOv5ncnn-vulkan.cpp.o
/home/\*/yolov5maligpu/YOLOv5-ncnn-arm/YOLOv5ncnn-vulkan/src/YOLOv5ncnn-vulkan.cpp: In function ‘int main()’:
/home/\*/yolov5maligpu/YOLOv5-ncnn-arm/YOLOv5ncnn-vulkan/src/YOLOv5ncnn-vulkan.cpp:122:13: error: ‘CV_CAP_PROP_FRAME_WIDTH’ was not declared in this scope
122 | cap.set(CV_CAP_PROP_FRAME_WIDTH, frameWidth);
| ^~~~~~~~~~~~~~~~~~~~~~~
/home/\*/yolov5maligpu/YOLOv5-ncnn-arm/YOLOv5ncnn-vulkan/src/YOLOv5ncnn-vulkan.cpp:123:13: error: ‘CV_CAP_PROP_FRAME_HEIGHT’ was not declared in this scope
123 | cap.set(CV_CAP_PROP_FRAME_HEIGHT, frameHeight);
| ^~~~~~~~~~~~~~~~~~~~~~~~
make[2]: *** [CMakeFiles/YOLOv5ncnn-vulkan.dir/build.make:76: CMakeFiles/YOLOv5ncnn-vulkan.dir/src/YOLOv5ncnn-vulkan.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:83: CMakeFiles/YOLOv5ncnn-vulkan.dir/all] Error 2
make: *** [Makefile:91: all] Error 2
“was not declared in this scope”这里就说明函数并未在使用的区域声明过,要么是自己写错了函数声明的区域(非全局);要么就是这项目使用的库版本对不上你系统安装的版本,两个版本之间这个函数名改了,这个时候就只有自己去搜修改后的函数名了。
上面这个例子就是opencv3的项目用opencv4的库编译时找不到“CV_CAP_PROP_FRAME_HEIGHT”和“CV_CAP_PROP_FRAME_WIDTH”的报错,opencv4将这两函数分别改名为了“CAP_PROP_FRAME_HEIGHT”和“CAP_PROP_FRAME_WIDTH”,项目里全局搜索替换就好。