问题标签 [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 投票
3 回答
20787 浏览

c++ - 从 demangled 名称中获取 mangled 名称

有没有办法从 g++ 中的 demangled name 中取回 mangled name。

例如,我有损坏的func(char*, int)名称,我应该怎么做才能_Z4funcPci恢复损坏的名称?

我的问题是 g++ 特定的。

0 投票
1 回答
3011 浏览

python - “私有”名称修改和实例与类属性

我正在编写一个需要访问私有变量的装饰器并发现了这种差异。谁能解释一下?

(Python 2.5)

对于类中定义的属性,命名修饰按预期工作:

实例属性不起作用(这是我们应该做的正确的方式?)

PS“类属性”是正确的词吗?它们不是静态的,但是如果您将其中之一设为列表或其他一些可变类型,则它是共享的...

更新

实际上,第二个示例也可以正常工作。这是一个硬件问题(重启有帮助)。

0 投票
2 回答
744 浏览

compiler-construction - 英特尔 Visual Fortran 编译器名称修改,我的编译器是不是疯了?

我正在使用 Intel Visual Fortran Composer XE 2011 在 MS Visual Studio 2008 中构建我的 Fortran 项目。我收到链接器错误:LNK2019 未解析的外部符号。

我在我的 obj 文件上做了一个垃圾箱,我所有的符号(在 CVF 调用约定下)都导出为 _symbol1、_symbol2、_symbol3 等等,除了三个随机的带有一些前缀的符号。

例如:_ imp _symbol4、_ imp _symbol5、_ imp _symbol6

起初我怀疑我的调用约定一定是问题,但如果这是我的调用约定,难道不是所有其他符号都以 imp 为前缀导出了吗?它是如此随机,以至于其中三个奇怪地导出,我不太明白发生了什么。任何帮助,将不胜感激。

0 投票
2 回答
1473 浏览

c++ - 由于名称修改而无法解析的外部符号

我在将 XERCES 函数从 2.6 升级到 2.8 时遇到链接器错误

我检查了 xerces-c_2.8.lib 并发现名称 lib 与我的 .obj 文件中的名称有点不同如图所示

所以我知道链接器不会找到匹配项并抛出错误。

但我无法理解为什么我的 .obj 文件包含不同的签名。

代码包括正确的头文件和名称仍然不正确的库。

任何帮助,将不胜感激。

0 投票
1 回答
157 浏览

c++ - 静态对象的名称管理

我遇到了这篇关于C++ 中动态链接的文章。

我们可以创建一个 C++ 工厂,它会返回我们感兴趣的类的对象。此外,我们应该在工厂的文件范围内创建一个静态对象,以便可以使用dlsym(). (文章建议静态对象没有名称混乱。)

为什么静态对象没有名称混乱?

0 投票
2 回答
218 浏览

python - Thread 模块的 __init__ 中定义的变量如何重命名为 _Thread_

我正在查看适用于 Windows 的 Active python 2.7.2 32 位上的threadingmodule( ) 代码。<Python Home>/lib/threading.py在 的__init__函数中class Thread,定义了很多变量:

这是我调用以下__init__功能的方式class Thread:-

我不明白该变量self._Thread__target没有在__init__函数的任何地方初始化class Thread。但是,如果我在自己的函数中打印此变量,则会显示from函数的__init__实际值。self.__targetclass Thread__init__

另外,我尝试编辑threading模块并将这一行作为__init__函数的最后一行class Thread:-

print 'in init of Thread class in threading: ', self._Thread__target

尽管如此,我仍然可以看到正在打印的值,并且解释器没有向我显示任何错误。所以,我试图找到任何可能进行重命名的函数。但是,找不到。

__init__函数中定义的所有其他变量都会发生这种情况class Thread。我想知道变量之类self.__target的重命名为self._Thread__target.

0 投票
2 回答
1319 浏览

c++ - 如何在 Visual Studio 汇编程序输出中解开名称?

使用 Visual Studio 2010/2012,可以编译带有/FAs开关的 c++ 源文件,以生成结果代码的汇编输出。但是生成的 asm 文件包含所有符号的损坏形式。

是否有开关或其他智能方法可以让 Visual Studio 生成未损坏的符号?我知道可以手动输入 asm 文件,undname.exe但切换会比自定义构建后事件方便得多。

0 投票
5 回答
494 浏览

c - C中的手动名称修改

我想为 C 接口实现某种名称修饰。我将拥有类似的功能和类型

现在,_ 在所有标准 c 类型定义中都广泛使用,因此如果使用这些类型定义,该方案将无法正常工作。GCC 和 MSVC 似乎接受使用 $ 的名称。那行得通吗?还有其他我可以使用的接受字符吗?

编辑:

我想这样做是因为

  • 它避免了重复的名称
  • 它强调标识符属于哪个类
  • 它使自动生成C++接口成为可能

编辑2:

保留一个普通的字母会到处编译,但它也可能令人困惑:

编辑 3:

该符号可能因目标平台而异,但在该平台上,它不得与 C++ 名称修饰冲突。

编辑4:

禁止以数字开头的标识符。那么呢:

0 投票
2 回答
358 浏览

python - 防止 Ada DLL 中的名称错误

在创建 Ada DLL 时,是否有一种简单的方法可以防止 Ada 名称被破坏?

这是我的 .adb 代码

我的 .ads

我的蟒蛇

您可以看到我必须在函数名称的末尾添加“@0”,但是当我将相同的代码移动到不同的编译器时,这似乎发生了变化。这给我带来了一些问题。我需要一个标准的修改格式或一种方法来一起删除修改。

0 投票
3 回答
1020 浏览

c++ - ABI 错位名称中的 C++ 模板参数依赖 decltype

考虑以下函数:

该片段Min(0, 1)导致模板被实例化为Min<int, int>. 奇怪的Min是,我的代码的 g++ 和 clang 的名称是_Z3MinIiiEDTqultfp_fp0_cl7forwardIT_Efp_Ecl7forwardIT0_Efp0_EEOS0_OS1_ (又名:)decltype (({parm#1}<{parm#2})?((forward<int>)({parm#1})) : ((forward<int>)({parm#2}))) Min<int, int>(int&&, int&&)。换句话说,用于推导返回类型的表达式是损坏的名称的一部分。就个人而言,我预计会稍微更理智一些:(_Z3MinIiiET_OS0_OT0_又名:)int Min<int, int>(int&&, int&&)为什么不是这样?


似乎 g++ 只decltype在实际需要的情况下使用表达式,因为这些形式都是_Z3Maxii

  • auto Max(int x, int y) -> int
  • auto Max(int x, int y) -> decltype(0)