编译darknet遇到的一些错误问题的解决: unknown type name ‘namespace’

前言

在darknet框架代码中,有可能在c代码文件中调用了 opencv的API,如下所示:data.c中调用了opencv代码。这时就会导致一些编译错误产生。

  /**************data.c*************/

... ...

#ifdef OPENCV
#include "opencv2/highgui/highgui_c.h"
#include "opencv2/imgproc/imgproc_c.h"
image image_data_augmentation(IplImage* ipl, int w, int h, int pleft, int ptop, int swidth, int sheight, int flip, float jitter, float dhue, float dsat, float dexp);
#endif

... ...

问题分析及解决

1)如果darknet的Makefile中指定的opencv版本为 4.00以上(pkg-config --libs opencv4),那么会出现下面这个错误。

 error: #error "OpenCV 4.x+ requires enabled C++11 support"

网上有的说 g++编译项目时,添加参数"-std=c++11"。但是这里的是c文件调用opencv头文件,没法触发g++编译,而gcc编译也不能添加该参数。 所以比较可行的办法就是,安装opencv3.x,并用pkg-config --libs opencv指定。当然,opencv3.x和4.x是可以共存的,具体参考:https://blog.csdn.net/avideointerfaces/article/details/90216832

2)unknown type name ‘namespace’。具体如下所示:

解决办法就是将cvdef.h中一段代码注释掉。如下红框所示。

编译darknet遇到的一些错误问题的解决: unknown type name ‘namespace’_第1张图片

3) 解决完上面这个编译错误后,还会遇到另外一个错误:error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘:’ token  如下所示。

 解决办法就是 将CV::Rect改成 CvRect.

 

 

你可能感兴趣的:(深度学习)