首页新闻找找看学习计划

Linux动态库so接口函数符号名称规则

0
[已解决问题] 解决于 2019-02-26 14:26

// 命名空间 hcc30_spcheck
long __stdcall PCCheck(long ADevID, unsigned int AType,
const void* AData, unsigned short ASize)
{
// ??? ... ...
return 1;
}

// 生成动态库libspcheck.so
// 查看动态库导出函数符号nm -D libspcheck.so
000000000000d1f0 T _ZN13hcc30_spcheck7PCCheckEljPKvt

问题:
符号名称前缀_ZN13以及后缀EljPKvt是怎么定义的? (后缀应该跟函数参数有关)

__kylong的主页 __kylong | 菜鸟二级 | 园豆:221
提问于:2019-02-26 09:45
< >
分享
最佳答案
0

这是c++编译器对函数名的修饰,保证函数的唯一性

https://zh.wikipedia.org/wiki/名字修饰

奖励园豆:5
Shendu.CC | 小虾三级 |园豆:1811 | 2019-02-26 10:35

这个修饰有什么规则没?可以从这些修饰符号里获取函数参数这些信息吗?

__kylong | 园豆:221 (菜鸟二级) | 2019-02-26 13:56

@__kylong: 是有规则的,可以获取函数的信息,给定一个函数,都可以按照规则推导出它的修饰之后的结果。具体这篇博客介绍的很详细。
https://blog.csdn.net/roland_sun/article/details/43233565

Shendu.CC | 园豆:1811 (小虾三级) | 2019-02-26 14:12

@Shendu.CC: got it. thanks.

__kylong | 园豆:221 (菜鸟二级) | 2019-02-26 14:26
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册