一、在使用cmake创建项目,并在make过程中,遇到以下问题的,这里提供定位问题并解决的相关参考

问题描述:make过程出现如下报错——

[ 82%] Building CXX object CMakeFiles/dwsr_wholes.dir/src/yolov5.cpp.o
[ 88%] Linking CXX executable dwsr_wholes

CMakeFiles/...dir/src/yolov5.cpp.o: In function `cv::Rect_<int>::Rect_(int, int, int, int)':
../../include/common_yolo.h:14: multiple definition of `get_rect(cv::Mat&, float*)'
CMakeFiles/...dir/src/main.cpp.o:../../include/common_yolo.h:14: first defined here
CMakeFiles/...dir/src/yolov5.cpp.o: In function `iou(float*, float*)':
../../include/common_yolo.h:41: multiple definition of `iou(float*, float*)'
CMakeFiles/...dir/src/main.cpp.o:../../include/common_yolo.h:41: first defined here
CMakeFiles/...dir/src/yolov5.cpp.o: In function `cmp(Yolo::Detection const&, Yolo::Detection const&)':
../../include/common_yolo.h:56: multiple definition of `cmp(Yolo::Detection const&, Yolo::Detection const&)'
CMakeFiles/...dir/src/main.cpp.o:../../include/common_yolo.h:56: first defined here
CMakeFiles/...dir/src/yolov5.cpp.o: In function `nms(std::vector<Yolo::Detection, std::allocator<Yolo::Detection> >&, float*, float, float)':
../../include/common_yolo.h:60: multiple definition of `nms(std::vector<Yolo::Detection, std::allocator<Yolo::Detection> >&, float*, float, float)'
CMakeFiles/...dir/src/main.cpp.o:../../include/common_yolo.h:60: first defined here
CMakeFiles/...dir/src/yolov5.cpp.o: In function `loadWeights(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)':
../../include/common_yolo.h:89: multiple definition of `loadWeights(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
CMakeFiles/...dir/src/main.cpp.o:../../include/common_yolo.h:89: first defined here
CMakeFiles/...dir/src/yolov5.cpp.o: In function `addBatchNorm2d(nvinfer1::INetworkDefinition*, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, nvinfer1::Weights, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, nvinfer1::Weights> > >&, nvinfer1::ITensor&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, float)':
../../include/common_yolo.h:127: multiple definition of `addBatchNorm2d(nvinfer1::INetworkDefinition*, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, nvinfer1::Weights, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, nvinfer1::Weights> > >&, nvinfer1::ITensor&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, float)'
CMakeFiles/...dir/src/main.cpp.o:../../include/common_yolo.h:127: first defined here
CMakeFiles/...dir/src/yolov5.cpp.o: In function `convBlock(nvinfer1::INetworkDefinition*, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, nvinfer1::Weights, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, nvinfer1::Weights> > >&, nvinfer1::ITensor&, int, int, int, int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)':
../../include/common_yolo.h:160: multiple definition of `convBlock(nvinfer1::INetworkDefinition*, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, nvinfer1::Weights, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, nvinfer1::Weights> > >&, nvinfer1::ITensor&, int, int, int, int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
CMakeFiles/...dir/src/main.cpp.o:../../include/common_yolo.h:160: first defined here
CMakeFiles/...dir/src/yolov5.cpp.o: In function `focus(nvinfer1::INetworkDefinition*, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, nvinfer1::Weights, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, nvinfer1::Weights> > >&, nvinfer1::ITensor&, int, int, int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)':
../../include/common_yolo.h:178: multiple definition of `focus(nvinfer1::INetworkDefinition*, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, nvinfer1::Weights, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, nvinfer1::Weights> > >&, nvinfer1::ITensor&, int, int, int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
CMakeFiles/...dir/src/main.cpp.o:../../include/common_yolo.h:178: first defined here
CMakeFiles/...dir/src/yolov5.cpp.o: In function `bottleneck(nvinfer1::INetworkDefinition*, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, nvinfer1::Weights, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, nvinfer1::Weights> > >&, nvinfer1::ITensor&, int, int, bool, int, float, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)':
../../include/common_yolo.h:189: multiple definition of `bottleneck(nvinfer1::INetworkDefinition*, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, nvinfer1::Weights, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, nvinfer1::Weights> > >&, nvinfer1::ITensor&, int, int, bool, int, float, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
CMakeFiles/...dir/src/main.cpp.o:../../include/common_yolo.h:189: first defined here
CMakeFiles/...dir/src/yolov5.cpp.o: In function `bottleneckCSP(nvinfer1::INetworkDefinition*, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, nvinfer1::Weights, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, nvinfer1::Weights> > >&, nvinfer1::ITensor&, int, int, int, bool, int, float, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)':
../../include/common_yolo.h:199: multiple definition of `bottleneckCSP(nvinfer1::INetworkDefinition*, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, nvinfer1::Weights, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, nvinfer1::Weights> > >&, nvinfer1::ITensor&, int, int, int, bool, int, float, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
CMakeFiles/...dir/src/main.cpp.o:../../include/common_yolo.h:199: first defined here
CMakeFiles/...dir/src/yolov5.cpp.o: In function `C3(nvinfer1::INetworkDefinition*, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, nvinfer1::Weights, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, nvinfer1::Weights> > >&, nvinfer1::ITensor&, int, int, int, bool, int, float, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)':
../../include/common_yolo.h:222: multiple definition of `C3(nvinfer1::INetworkDefinition*, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, nvinfer1::Weights, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, nvinfer1::Weights> > >&, nvinfer1::ITensor&, int, int, int, bool, int, float, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
CMakeFiles/...dir/src/main.cpp.o:../../include/common_yolo.h:222: first defined here
CMakeFiles/...dir/src/yolov5.cpp.o: In function `SPP(nvinfer1::INetworkDefinition*, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, nvinfer1::Weights, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, nvinfer1::Weights> > >&, nvinfer1::ITensor&, int, int, int, int, int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)':
../../include/common_yolo.h:239: multiple definition of `SPP(nvinfer1::INetworkDefinition*, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, nvinfer1::Weights, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, nvinfer1::Weights> > >&, nvinfer1::ITensor&, int, int, int, int, int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
CMakeFiles/...dir/src/main.cpp.o:../../include/common_yolo.h:239: first defined here
CMakeFiles/...dir/src/yolov5.cpp.o: In function `SPPF(nvinfer1::INetworkDefinition*, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, nvinfer1::Weights, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, nvinfer1::Weights> > >&, nvinfer1::ITensor&, int, int, int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)':
../../include/common_yolo.h:260: multiple definition of `SPPF(nvinfer1::INetworkDefinition*, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, nvinfer1::Weights, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, nvinfer1::Weights> > >&, nvinfer1::ITensor&, int, int, int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
CMakeFiles/...dir/src/main.cpp.o:../../include/common_yolo.h:260: first defined here
CMakeFiles/...dir/src/yolov5.cpp.o: In function `getAnchors(std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, nvinfer1::Weights, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, nvinfer1::Weights> > >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)':
../../include/common_yolo.h:279: multiple definition of `getAnchors(std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, nvinfer1::Weights, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, nvinfer1::Weights> > >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
CMakeFiles/...dir/src/main.cpp.o:../../include/common_yolo.h:279: first defined here
CMakeFiles/...dir/src/yolov5.cpp.o: In function `addYoLoLayer(nvinfer1::INetworkDefinition*, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, nvinfer1::Weights, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, nvinfer1::Weights> > >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<nvinfer1::IConvolutionLayer*, std::allocator<nvinfer1::IConvolutionLayer*> >)':
../../include/common_yolo.h:291: multiple definition of `addYoLoLayer(nvinfer1::INetworkDefinition*, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, nvinfer1::Weights, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, nvinfer1::Weights> > >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<nvinfer1::IConvolutionLayer*, std::allocator<nvinfer1::IConvolutionLayer*> >)'
CMakeFiles/...dir/src/main.cpp.o:../../include/common_yolo.h:291: first defined here
/usr/bin/ld: error in /usr/bin/c++(.eh_frame); no .eh_frame_hdr table will be created.
collect2: error: ld returned 1 exit status
CMakeFiles/...dir/build.make:1792: recipe for target '..' failed
make[2]: *** [..] Error 1
CMakeFiles/Makefile2:80: recipe for target 'CMakeFiles/...dir/all' failed
make[1]: *** [CMakeFiles/...dir/all] Error 2
Makefile:86: recipe for target 'all' failed
make: *** [all] Error 2

这个日志中有提到 多次定义,那么来找下那里重复定义了

***.h:14: multiple definition of `get_rect(cv::Mat&, float*)'

***.h:14: first defined here

常规方法

使用如下代码,在定义头文件的时候加在首尾

#ifndef ***_H
#define ***_H
/*
代码
*/
#endif

如果得不到解决,并且在全局中搜多不到对应函数的多次定义记录,那么可能遇到的问题是多次加载某个定义,使用以下方法

解决方案:

搜索对应函数所在的文件名,“common_yolo.h”

这个时候回发现,在Makefile过称的中间文件有记录“common_yolo.h”相应的加载记录,可以定位到加载了几次,通过这个方法,自己去确认是否有重复加载的操作,去除掉之后,可以解决问题。

核心原因,多次定义原因在于嵌套定义,新定义的头文件最好不要在头文件里面进行include,同时严格遵照编码准则,方法定义写在cpp里面,不要把方法直接写在头文件里面。

C++ 编译过程遇到问题快速查找解决相关推荐

  1. MNIST手写字体识别入门编译过程遇到的问题及解决

    MNIST手写字体识别入门编译过程遇到的问题及解决 以MNIST手写字体识别作为神经网络及各种网络模型的作为练手,将遇到的问题在这里记录与交流. 激活tensorflow环境后,运行spyder或者j ...

  2. mtk android 编译过程,MTK android 快速编译方法.doc

    . . [FAQ10625] 提升Android编译速度 Platform: MT6572 MT6582 MT6588 MT6589 MT6592 MT6595 MT6571 MT6582/92+MT ...

  3. ubuntu中手动编译源码安装Xorg-server过程中依赖关系的解决

    ubuntu中手动编译源码安装Xorg-server过程中依赖关系的解决 在linux系统中手动编译源码安装软件包的过程是非常痛苦的,然而这一个多星期以来我是强忍住脾气体验了一把,虽然面对慢的令人发指 ...

  4. 嵌入式Linux配置内核后编译过程中报未定义引用错误的解决

    我想要在Linux下驱动摄像头ov5640,使用的SoC是NXP的IMX6ULL,内核版本4.1.15.我想要一个比较纯净的嵌入Linux环境,所以打算自己裁剪和移植uboot+linux内核+roo ...

  5. 5个Excel快速查找,解决删除重复值技巧

    现在在职场中,少不了要用到Excel技巧,虽然有时很快捷,但不能保证在使用的过程中没有重复的数据的出现,想要排查重复数据,一个个的看,那多浪费时间,所以呀,今天小编就来教给大家5个很实用的查找,删除. ...

  6. 编译recovery及过程中的部分错误解决

    你必须使用32位或64位Ubuntu系统,关于如何建立编译环境和同步源码的指导,请自己查找有关指导的文章. 1, 安装所需要的包 2, 建立编译的环境,并同步CWM所需的源码,CyanogenMod源 ...

  7. vc2005编译过程中没有找到MFC80UD.DLL,因此这个程序未能启动.重新安装应用程序可能会修复此问题? 的彻底解决

    vc2005编译过程中"没有找到MFC80UD.DLL,因此这个程序未能启动.重新安装应用程序可能会修复此问题"? 的彻底解决 收藏 快毕业了,为了工作的需要,需要使用庞大的VS2 ...

  8. ubuntu10.04下audacious2.4源码编译过程(解决2.3cue的bug)

    本文最新版本:ubuntu10.04下audacious2.5源码编译过程 编译最新的2.4是为了解决ubuntu源中安装的audacious播放cue时有bug,会一直重复第一首歌 听ape的时候很 ...

  9. Linux下C/C++程序编译链接加载过程中的常见问题及解决方法

    Linux下C/C++程序编译链接加载过程中的常见问题及解决方法 1 头文件包含的问题 报错信息 该错误通常发生在编译时,常见报错信息如下: run.cpp:2:10: fatal error: dl ...

最新文章

  1. 基于第四层交换技术的负载均衡
  2. 【spring】在不联网的情况下查看xml的定义规则的方法
  3. python操作json_Python学习之利用Python处理JSON格式数据
  4. c++ stl队列初始化_声明,初始化和访问向量| C ++ STL
  5. SNF快速开发平台MVC-自由排序组件
  6. cookies与session
  7. Leetcode算法题(C语言)3--买卖股票的最佳时机 II
  8. 【Python-GPU】GPU数据科学加速包——RAPIDS
  9. 突然!华为P30 Pro真机上手视频曝光:屏幕指纹解锁秒开
  10. 分组(recyclerview嵌套)
  11. 少一些计较多_做人,少一点套路,多一些真诚,少一点计较,多一些宽容
  12. Python多线程学习(上)
  13. 扩展 MongoDB.Driver 支持实体
  14. 全球铁矿石行业供给分析与投资可行性分析报告2022年版
  15. 批量word删除页眉页脚——VBS脚本,在office宏中运行即可
  16. 视频直播画质核心影响因素分析:分辨率、帧率和码率
  17. NC系统与一卡通集成解决方案(一)
  18. JAVA文件下载,IE不提示下载,直接打开的解决方法
  19. aelf Enterprise 0.8.0 beta有奖公测,“Bug奖金计划”重磅开启
  20. RO、RW和ZI的区别

热门文章

  1. PM25文本相似度算法JAVA实现
  2. 学习笔记a——物联网安全
  3. 【干货】大数据创新驱动智慧民生
  4. 抛掷式侦查机器人_侦察机器人的研究现状
  5. Xcode 4.1/4.2/4.3/4.4/4.5 + iOS 5.1.1免证书(iDP)开发+真机调试+生成IPA全攻略
  6. 【Windows Server 2019】FTP服务的配置与管理——配置FTP站点(下)SSL设置及被动模式
  7. python实现批量下载Excel中PDF的URL到本地
  8. Pico Neo3手柄抓取物体
  9. Ubuntu 14.04 64位版安装 QQ国际版实测可用
  10. [论文阅读] 对话式推荐系统的进展与挑战:综述(Advances and Challenges in Conversational Recommender Systems: ASurvey)-06