YOLO编译小问题 couldn't open file

最近在编译darknet 在ROS下的代码出现了一个问题,之前编译的时候没出现的,过了一段时间再次编译同一个包却发现配置训练模型文件时弹了一个警告:

warning:deprecated conversion from string constant to ‘char*’

如下图所示。

尽管依然可以编译成功,但在运行程序时就会提示 couldn't open file : /home/ros_ws/src/darknet_ros/cfg/tiny-yolo-voc.cfg

如下图所示,因为没有成功打开训练模型文件,所以就无法正常运行了。


捣鼓了两天,总算解决了这个问题,只是很奇怪为什么之前跑程序的时候没出现这个问题,反而是过了一段时间之后再跑程序就出现了这个问题。

原因应该是,在程序里指定的路径是将character pointer variable 初始化成一个string literal

大神解释是在最新的C标准或者C++标准中, 使用如下语句:

char *cfg = "/home/will/ros_ws/src/darknet_ros/cfg/tiny-yolo-voc.cfg";
char *weights = "/home/will/ros_ws/src/darknet_ros/weights/tiny-yolo-voc.weights";
无论使用gcc 或者g++命令,都会报 warning:deprecated conversion from string constant to ‘char*’, 不能通过编译。


解决方法:将上述语句改为

char *cfg =(char*) "/home/will/ros_ws/src/darknet_ros/cfg/tiny-yolo-voc.cfg";
char *weights =(char*) "/home/will/ros_ws/src/darknet_ros/weights/tiny-yolo-voc.weights";

同时也要注意,要用绝对路径,不要忘了home后面是user。

之后再编译就不会出现警告了,这个问题之前编译的时候没遇到,有些人编译的时候按照更改前的语句编译也没有问题,如果遇到的可以试试上述的方法,为了解决这个小问题,花了一天半的时间,希望对大家有点帮助,O(∩_∩)O谢谢。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 22
    评论
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值