当前位置: 首页 > news >正文

C++错误: multiple definition of `Q‘

今天在使用CMake进行编译时,出现了:

/usr/bin/ld: CMakeFiles/HyperVisualize.dir/tasks.cpp.o:/home/kimi/FalseColor/Queue.h:109: multiple definition of `Q'; CMakeFiles/HyperVisualize.dir/main.cpp.o:/home/kimi/FalseColor/Queue.h:109: first defined here
/usr/bin/ld: CMakeFiles/HyperVisualize.dir/tasks.cpp.o:(.bss+0x122): multiple definition of `__odr_asan.Q'; CMakeFiles/HyperVisualize.dir/main.cpp.o:(.bss+0x268): first defined here
collect2: error: ld returned 1 exit status

我自定义了一个存储图像字节数据的队列类Queue,放在头文件Queue.h中,并在Queue.h中定义了队列类对象数组:

Queue Q[3];

然而main.cpp和tasks.cpp都包含了头文件Queue.h

按照Kimi的说法:

在编译过程中出现的链接错误提示multiple definition of 'Q’是由于违反了C++的ODR(One Definition Rule)原则,即全局变量或对象在多个编译单元中被重复定义。

由于在头文件中定义了数组Q。当多个源文件(如main.cpp和tasks.cpp)包含该头文件时,每个源文件都会生成Q的一个定义,导致链接时冲突。

http://www.dtcms.com/a/177876.html

相关文章:

  • Matlab B级路面激励下集中驱动、轮边驱动和主动减振车辆
  • css3伸缩盒模型第三章(伸缩相关)
  • JWT深度解析:现代Web身份验证的通行证-优雅草卓伊凡
  • 基于FPGA婴儿安全监护系统(蓝牙小程序监测)
  • python小说网站管理系统-小说阅读系统
  • 深入解析asyncio的实现与应用
  • 在模 p 运算中,将负数 x 转换为对应的正数,执行 (x % p + p) % p 操作即可。
  • 大模型调优方法与注意事项
  • 基于springboot+vue的校园部门资料管理系统
  • 【java】oop 结课模拟题版
  • Python 异常处理与文件 IO 操作:构建健壮的数据处理体系(3/10)
  • 【开源】Python打造高效剪贴板历史管理器:实现跨平台生产力工具
  • 数据分析平台选型与最佳实践:如何打造高效、灵活的数据生态?
  • PyTorch 实战:从 0 开始搭建 Transformer
  • 按句子切分文本、保留 token 对齐信息、**适配 tokenizer(如 BERT)**这种需求
  • 数据中台-常用工具组件:DataX、Flink、Dolphin Scheduler、TensorFlow和PyTorch等
  • 计算机视觉与深度学习 | 基于Transformer的低照度图像增强技术
  • 从知识图谱到精准决策:基于MCP的招投标货物比对溯源系统实践
  • 【银河麒麟高级服务器操作系统】服务器外挂存储ioerror分析及处理分享
  • flinksql bug : Max aggregate function does not support type: CHAR
  • Debian系统详解
  • UV使用官网
  • 【C语言】--指针超详解(二)
  • 基于Kubernetes的Apache Pulsar云原生架构解析与集群部署指南(上)
  • 408考研逐题详解:2009年第10题
  • 美化IDEA注释:Idea 中快捷键 Ctrl + / 自动注释的缩进(避免添加注释自动到行首)以及 Ctrl + Alt + l 全局格式化代码的注释缩进
  • 从0到1:用Lask/Django框架搭建个人博客系统(4/10)
  • IT/OT 融合架构下的工业控制系统安全攻防实战研究
  • 美化cmd窗格----添加背景图
  • 一文读懂Nginx应用之 HTTP负载均衡(七层负载均衡)