问题标签 [name-mangling]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
16 回答
996254 浏览

c++ - C++中extern "C" 的作用是什么?

放入 C++ 代码到底有什么作用extern "C"

例如:

0 投票
4 回答
6624 浏览

python - 私有名称修改有什么好处?

Python为类方法和属性提供私有名称修饰。

是否有需要此功能的具体案例,或者它只是 Java 和 C++ 的继承?

请描述一个应该使用 Python 名称修饰的用例,如果有的话?

另外,我对作者只是试图防止意外的外部属性访问的情况不感兴趣。我相信这个用例与 Python 编程模型不一致。

0 投票
2 回答
1939 浏览

c++ - 在 OS/X (10.5.7) 中生成 C++ 回溯

我一直在使用 backtrace 和 backtrace_symbols 来生成程序堆栈跟踪,以用于日志记录/诊断。它似乎大致工作,但是,我得到了一点修饰,并且没有与每个函数调用相关联的随附文件/行号(正如我在 gdb bt 调用或其他东西中所期望的那样)。这是一个例子:

1 leonardo 0x00006989 _ZN9ExceptionC2E13ExceptionType + 111
2 leonardo 0x00006a20 _ZN9ExceptionC1E13ExceptionType + 24
3 leonardo 0x0000ab64 _ZN5Rules11ApplyActionER16ApplicableActionR9GameState + 1060
4 leonardo 0x0000ed15 _ZN9Simulator8SimulateEv + 2179
5 leonardo 0x0000eec9 _ZN9Simulator8SimulateEi + 37
6 leonardo 0x00009729 main + 45
7 leonardo 0x000025c6 start + 54

任何我遗漏的东西,做一些愚蠢的事情,或者这就是我在 OS/X 上的回溯中所能期望的?

其他一些花絮:

  • 我没有看到rdynamic我正在使用的 g++ 版本(4.0.1)的链接选项。
  • -g/-g3没有任何区别。
  • abi::__cxa__demangle似乎什么也没做

  • 0 投票
    10 回答
    21025 浏览

    language-agnostic - 什么是名称修饰,它是如何工作的?

    请解释什么是名称修饰,它是如何工作的,它解决了什么问题,以及在哪些上下文和语言中使用。名称修改策略(例如,编译器选择什么名称以及为什么选择)是一个加分项。

    0 投票
    2 回答
    41655 浏览

    c++ - 如何在 Linux 上查看(C 和 C++)二进制符号?

    你们都用什么工具?demangle c++ 符号如何能够将其传递给分析器工具,例如opannotate

    谢谢

    0 投票
    4 回答
    38594 浏览

    c++ - 如何停止对我的 DLL 导出函数的名称修改?

    我正在尝试创建一个导出名为“GetName”的函数的 DLL。我希望其他代码能够调用此函数而不必知道损坏的函数名称。

    我的头文件如下所示:

    我的代码如下所示:

    当我构建时,DLL 仍然导出名称为:“_GetName@0”的函数。

    我究竟做错了什么?

    0 投票
    5 回答
    54930 浏览

    reflection - Scala:如何动态实例化对象并使用反射调用方法?

    在 Scala 中,动态实例化对象并使用反射调用方法的最佳方法是什么?

    我想做以下Java代码的Scala等价物:

    在上面的代码中,类名和方法名都是动态传入的。上面的 Java 机制可能可以用于Fooand hello(),但是 Scala 类型与 Java 的类型不是一一对应的。例如,可以为单例对象隐式声明一个类。Scala 方法也允许使用各种符号作为它的名称。两者都通过名称修饰来解决。请参阅Java 和 Scala 之间的互操作

    另一个问题似乎是通过解决重载和自动装箱来匹配参数,在Reflection from Scala - Heaven and Hell中有描述。

    0 投票
    4 回答
    2158 浏览

    delphi - Delphi - 解开 BPL 中的名称

    是否可以在 Delphi 中解开这些名称?如果是这样,我在哪里可以获得更多信息?

    在 dbrtl100.bpl 中找不到某个条目的错误消息示例 我想知道它找不到哪个确切的函数(单元、类、名称、参数等)。

    我知道这是 Dbcommon 单元中的 GetTableNameFromSQLEx 方法(我有带有 RTL/VCL 源的 Delphi),但有时我会遇到并非所有代码都可用的应用程序(是的,客户应该始终为第 3 方购买所有源代码东西,但有时他们不会)。

    但是假设这是一个我没有代码的例子,或者只有接口文件(BDE.INT 任何人?)它有什么参数(即哪些潜在的过载)?它有什么返回类型?

    对于任何 Delphi 版本,这是否相同?

    ——杰伦

    编辑 1

    感谢 Rob Kennedy:tdump -e dbrtl100.bpl 成功了。根本不需要-um :

    编辑 2

    感谢 TOndrej 发现了这篇德语 EDN 文章英文谷歌翻译)。那篇文章非常准确地描述了这种格式,应该可以创建一些 Delphi 代码来解决这个问题。

    可惜作者提到的网站(和电子邮件)现在已经死了,但很高兴知道这个信息。

    ——杰伦

    0 投票
    1 回答
    1131 浏览

    c++ - 使用 Visual Studio sdk 取消装饰函数名称

    要取消修饰 Visual Studio 生成的错位 C++ 名称,您可以使用undname.exe.

    但是,如果您想避免每次需要取消装饰时都创建完整流程的开销,该怎么办?
    Visual Studio SDK 中是否有任何等效功能(VS2005 应该支持)?

    0 投票
    2 回答
    616 浏览

    c++ - 如何截断 GDB 的反汇编命令显示的损坏的 C++ 标识符?

    GDB 的反汇编命令非常适合短 C 标识符,例如main。对于冗长的、错位的 C++ 标识符,冗长是多余的。例如,使用 icpc 我看到的结果如下

    在 CLI 中显示太长很烦人。它们使 GDB 的 TUI 程序集显示几乎毫无用处。

    有没有办法告诉 GDB 显示截断的标识符?说剪辑除了 50 个字符之外的所有字符?