两个混乱的名称删除了相同的功能签名
Two mangled names demangling to the same function signature
我有一个spidermonkey库,该库导出以下操纵符号fora函数 JS_DefineProperty
:
_Z17JS_DefinePropertyP9JSContextP8JSObjectPKcN2JS5ValueEPFiS0_NS5_6HandleIS2_EENS7_I4jsidEENS5_13MutableHandleIS6_EEEPFiS0_S8_SA_iSC_Ej
当我尝试编译使用此功能的文件时,将外部引用编译为:
_Z17JS_DefinePropertyP9JSContextP8JSObjectPKcN2JS5ValueEPFiS0_NS5_6HandleIS2_EENS7_IlEENS5_13MutableHandleIS6_EEEPFiS0_S8_S9_iSB_Ej
名称的末尾在两者之间略有不同。我俩都通过一个名字登头跑,他们俩都达到了相同的签名:
JS_DefineProperty(JSContext*, JSObject*, char const*, JS::Value, int (*)(JSContext*, JS::Handle, JS::Handle, JS::MutableHandle), int (*)(JSContext*, JS::Handle, JS::Handle, int, JS::MutableHandle), unsigned int)
所以我对区别有些困难。我相信这两个版本都是使用g++ 4.7
编译的。谁能解码名称的额外差异,以便我可以进一步研究?
实际上两者之间存在区别。
_Z17JS_DefinePropertyP9JSContextP8JSObjectPKcN2JS5ValueEPFiS0_NS5_6HandleIS2_EENS7_I4jsidEENS5_13MutableHandleIS6_EEEPFiS0_S8_SA_iSC_Ej
emangles to:
JS_DefineProperty(JSContext*, JSObject*, char const*, JS::Value, int (*)(JSContext*, JS::Handle<JSObject*>, JS::Handle<jsid>, JS::MutableHandle<JS::Value>), int (*)(JSContext*, JS::Handle<JSObject*>, JS::Handle<jsid>, int, JS::MutableHandle<JS::Value>), unsigned int)
_Z17JS_DefinePropertyP9JSContextP8JSObjectPKcN2JS5ValueEPFiS0_NS5_6HandleIS2_EENS7_IlEENS5_13MutableHandleIS6_EEEPFiS0_S8_S9_iSB_Ej
emangles to:
JS_DefineProperty(JSContext*, JSObject*, char const*, JS::Value, int (*)(JSContext*, JS::Handle<JSObject*>, JS::Handle<long>, JS::MutableHandle<JS::Value>), int (*)(JSContext*, JS::Handle<JSObject*>, JS::Handle<long>, int, JS::MutableHandle<JS::Value>), unsigned int)
在使用JS::Handle<jsid>
的情况下,后者使用JS::Handle<long>
。
相关文章:
- 在Qt5中使用QTextSteam时的"使用已删除功能"
- 链表删除功能的单指针 // 是可能的
- 删除功能不适用于串行通信后多个循环中的多个实例
- 为什么每当我尝试运行此链接列表删除功能时都会收到分段错误错误?
- 使用删除功能?
- Sinlge 链表,C++,删除所有和搜索功能的问题
- 如何实现删除数组的功能?
- 使用已删除的功能unique_ptr
- C++使用已删除的功能与unique_ptr,make_unique
- 错误:当我尝试使用引用时,使用已删除的功能
- 二叉搜索树 - 使用 Linux 在虚拟机中制作删除功能
- 为什么我的删除功能总是出现分段错误
- C++链表删除和删除返回功能
- 与 c++ 中的删除功能混淆
- 启用 C++17 中已删除的功能
- C++:提升 ptree 删除子项:无匹配功能
- 用户使用C++中的删除功能删除文件
- =删除用户定义的成员功能,除了构造函数,分配运算符C 11
- 为什么我的打印功能之一删除节点
- 功能删除在我第二次激活它时不起作用