news 2026/4/18 7:01:42

【c++】——c++编译的so中函数有额外的字符

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【c++】——c++编译的so中函数有额外的字符

0. 代码

// cintadd(inta,intb){returna+b;}

用gcc编译成动态库,并用nm看函数名字。

gcc -shared -fPIC -o libtest.so add.c nm -D --defined-only ./libtest.so|grep-E"[Tt]"0000000000201020 B __bss_start 0000000000201020 D _edata 000000000000056c T _fini 0000000000000460 T _init 0000000000000555 Tadd

用g++编译成动态库,并用nm看函数名字

g++ -shared -fPIC -o libtestc++.so add.c nm -D --defined-only ./libtestc++.so|grep-E"[Tt]"0000000000000555 T _Z3addii 0000000000201020 B __bss_start 0000000000201020 D _edata 000000000000056c T _fini 0000000000000468 T _init

如果要g++编译动态的名字不变,需要加上以下代码

// add.h#ifdef__cplusplusextern"C"{intadd(inta,intb);}#endif// add.c#include"add.h"intadd(inta,intb){returna+b;}

1. 原因

这个是 C++ 的名字修饰(Name Mangling) 机制导致的,是 C++ 为了支持函数重载、命名空间、类成员函数等特性,而对函数名进行的特殊编码,最终会在编译后的 SO(共享库)中生成带有额外字符的函数名。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 22:01:11

AI一周重要会议和活动(12.15-12.22)

1.【会议通知】2025年第八届人工智能与云计算国际会议将于12月20至22日在日本东京举行第八届人工智能与云计算国际会议(2025 8th Artificial Intelligence and Cloud Computing Conference,AICCC 2025)将于2025年12月20日至22日在日本东京隆重举办。作为…

作者头像 李华
网站建设 2026/4/17 18:30:12

URL.createObjectURL()、URL.revokeObjectURL() 详解

URL.createObjectURL() 详解基本概念URL.createObjectURL() 是一个静态方法,用于为 Blob 或 File 对象创建一个唯一的 URL。这个 URL 可以在浏览器中像普通 URL 一样使用,但指向的是内存中的对象。基本语法javascriptconst objectURL URL.createObjectU…

作者头像 李华
网站建设 2026/4/17 5:24:35

2025时序数据库选型指南:从大数据视角看Apache IoTDB的核心优势

随着物联网、工业互联网、大数据技术的深度普及,时序数据已成为企业数字化转型的核心资产——工业传感器、智能设备、运维监控、车联网等场景每天都会生成海量时序数据。据统计,2025年国内企业时序数据产生量同比增长超60%,选择一款适配业务场…

作者头像 李华
网站建设 2026/4/18 5:03:22

DNP3.0学习记录

今天终于出现了豁然开朗的感觉,拨开云雾见透明的感觉,之前一直以为自己懂了整个协议都摸清楚了,但是到了实际项目过程还是半知半解,总是云里雾里的,知道也知道,但是好像又不知道,正所谓&#xf…

作者头像 李华
网站建设 2026/4/18 5:02:01

【C2000中断Debug】如何实现中断嵌套Interrupt Nesting以及中断调试

【C2000中断嵌套】如何实现中断嵌套Interrupt Nesting 我们都知道C28x中断向量表是固定的,中断向量表会在初始化的时候加载到RAM中去,参考如下: 关于中断嵌套,中断通过 C28x 硬件自动设置优先级。可在特定器件系列专用的系统控制指南中找到所有中断的优先级。当 C28x CPU 响…

作者头像 李华