linker command failed with exit code 1

embedded/2024/10/19 3:26:02/

报错内容(80年不写C++,连虚函数是啥都忘了hhhh)

Undefined symbols for architecture arm64:"IDPairAccum::run()", referenced from:_main in main.o"IDPairAccum::~IDPairAccum()", referenced from:_main in main.o_main in main.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

链接器找不到 IDPairAccum 类的析构函数 ~IDPairAccum() 和成员函数 run() 的定义。错误信息表明,这两个符号在arm64 架构下未定义,导致链接器无法完成链接过程。

通俗点儿说,就是它能看到你的函数声明,却看不到你的函数内容(函数定义),也就是没有找到你的函数实现内容,一种可能是真的没有实现,另一种可能是 g++ 编译的时候没有吧这个函数加上。

以上情况是有声明没实现,那要是连声明都没有,报什么错呢?

显然他只会报:

xxx.cpp:18:1: error: use of undeclared identifier 'IDPairAccum'
IDPairAccum::IDPairAccum(
^

值得一提的是,如果虚析构函数只有声明,没有实现,他的报错是这样的

Undefined symbols for architecture arm64:"IDPairAccum::~IDPairAccum()", referenced from:_main in main.o_main in main.o"vtable for IDPairAccum", referenced from:IDPairAccum::IDPairAccum(...) in xxx.oNOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

链接器指出 vtable for IDPairAccum 未定义。

这通常意味着 IDPairAccum 类中声明了虚函数,但是没有为这些虚函数提供定义(实现)。
虚函数表(vtable)是编译器为每个含有虚函数的类生成的一个表,它用于支持动态绑定。

如果类中的第一个非内联虚函数没有定义,链接器就会找不到这个vtable,导致链接错误。


http://www.ppmy.cn/embedded/93393.html

相关文章

WPF篇(13)-ScrollViewer控件+ScrollBar滚动条+Slider滑动条

ScrollViewer控件 如果某个控件的尺寸太大,当前界面无法全部显示,则可以将这个控件包含在ScrollViewer中,因为ScrollViewer控件封装了一个水平滚动条ScrollBar和一个垂直滚动条ScrollBar,所以,ScrollViewer就是一个包…

使用 Vue3 生成二维码和条形码

目录 前言 一、前期准备 1.1. 使用Vite创建工程化项目 1.2 安装所需的依赖 二、环境检查 三、生成二维码 3.1 创建二维码组件 3.2 在App.vue中使用二维码组件 四、生成条形码 4.1 创建条形码组件 4.2.在App.vue中使用条形码组件 五、启动测试与效果演示 5.1 启动de…

oracle 并行parallel的插入insert用法

在Oracle数据库中,INSERT 语句确实可以使用 Parallel(并行)功能。通过并行插入,可以在插入数据时同时利用多个并行操作进程来执行插入操作,从而显著提高插入操作的速度和效率。这对于需要处理大量数据插入的场景尤为有…

【大数据】探索大数据基础知识:定义、特征与生态系统

欢迎来到我的博客,很高兴能够在这里和您见面!欢迎订阅相关专栏: 工💗重💗hao💗:野老杂谈 ⭐️ 全网最全IT互联网公司面试宝典:收集整理全网各大IT互联网公司技术、项目、HR面试真题.…

Advanced IP Scanner - 网络扫描工具介绍

Advanced IP Scanner 是一款免费、快速且用户友好的网络扫描工具。它能够帮助用户扫描局域网(LAN)中的所有设备,提供详细的设备信息,包括IP地址、MAC地址、设备名称和厂商信息。该工具对IT管理员和普通用户都非常有用,…

Spring Cloud微服务项目文件上传/下载

在现代的微服务架构中,文件上传与下载是常见的需求,尤其是在需要处理大量文件数据的系统中。Spring Cloud 提供了灵活的工具和组件,使得在微服务中实现文件上传和下载变得高效而简便。 本文博主将详细介绍如何在 Spring Cloud 微服务项目中实…

操作ArkTS页面跳转及路由相关心得

本文为JS老狗原创。 当前端不得不关注的点:路由,今天聊一聊鸿蒙相关的一点心得。 总体上套路不意外,基本就是(尤其是Web)前端那些事:维护路由表、跳转带参数、历史堆栈操作,等等。 历史原因&…

java之贪婪爬取和非贪婪爬取

public class RegexDemo6 {public static void main(String[] args) {String str"java自从95年问世以来,abbbbbbbbbbbbbbbbbaaaaaaaaaaaaaaaa" " 经历了很多版本,目前企业中用的最多是java8和java11,""因为这俩个是长期版本,下一个长期支持版本是java…