编译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中一段代码注释掉。如下红框所示。

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

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

 

 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ltshan139

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值