问题标签 [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 回答
2960 浏览

c - 有什么可以改变 GCC 中的出口名称修改方案吗?

我正在尝试构建一个我拥有的项目,它有几个导出的函数。这些函数遵循 stdcall 约定,如果使用 GCC 编译为

其他编译器会像这样修改名称:

有什么办法可以强制 GCC 将导出函数的名称修改为后面的示例?

0 投票
3 回答
2403 浏览

c# - 编译器生成的 Cruft

我正在尝试使用 Reg Gate 的反射器从程序集中恢复源。原始源代码利用了几个 C# 3.0 特性,这使得恢复起来有点困难。例如,这里是匿名类型的恢复源。弹出的第一件事是类标识符上的 <> 。运行时类型命名规则显然比设计时规则更自由。很公平。一个简单的搜索和替换将解决这个问题。我必须注意哪些其他编译器修改以及如何处理它们?

0 投票
3 回答
2107 浏览

python - Python:动态类生成:覆盖成员

我有一个 python 类层次结构,我想在运行时扩展它。此外,这个层次结构中的每个类都有一个静态属性“dict”,我想在每个子类中覆盖它。简单地说,它看起来像这样:

'dict' 是受保护的(公共但带有前导下划线)成员

这就像预期的那样工作。现在的问题是:如果我将属性声明为私有,为什么它不再起作用:

现在,“dict”成为私人成员也是如此

突然D, , 的子类C在 'dict' 中的值与其超类相同!?

谁能这么好心向我解释一下,这是什么原因?提前致谢!

0 投票
1 回答
362 浏览

c++ - 寻求STL-aware c++filt

在我的开发环境中,我正在使用 GNU C++ 3.4.6 编译代码库。代码正在开发中,不幸的是有时会崩溃。很高兴能够通过 demangler 运行回溯,我使用 c++filt 3.4。当函数有许多 STL 参数时,问题就出现了。考虑

当这个函数在回溯中时,我平台上的错误输出是:

c++filt 好心地将其解码为

这与使用模板时遇到的编译器错误相同。但是,STL 是一个相当常规且可识别的模板包。所以我希望有人已经创建了 c++filt 的增强版本,它将转储一些更接近原始函数签名的东西。有什么提示吗?

0 投票
3 回答
13459 浏览

gdb - 如何使 gdb 在反汇编模型上显示原始的非修饰函数名称?

原来是

所有的反汇编只显示了重整的函数名称,但它并不容易让程序员去重整并获得原始函数名称,而不必为info symbol address遇到的每个重整名称键入麻烦,所以有没有任何方法可以使 gdb 显示非重整装配模型上的函数名称?

0 投票
1 回答
1505 浏览

java - g++:如何解开导出的符号

我正在尝试编译一个使用 JNI 的 Java 库。当我启动程序时,我看到一个带有 UnsatisfiedLinkError 的崩溃,它表示在 DLL 中找不到特定的方法。

经过仔细检查,我发现用于编译和链接的 g++ 通过在方法名称中添加诸如“@8”或“@16”之类的后缀来破坏我的方法名称。有人知道禁用名称修改的正确编译器选项吗?提前致谢!

编辑:我通过 Eclipse + CDT 插件使用 MinGW。

0 投票
5 回答
1706 浏览

c++ - C和C++之间的联系有什么区别?

我已经阅读了关于外部/内部链接的现有问题。我的问题是不同的 - 如果我在不同的翻译单元中有多个相同变量的定义和外部链接会发生C什么C++

例如:

使用Dev-C++,作为C程序,上述程序编译链接完美;而如果将其编译为 C++ 程序,则会出现多重重新定义错误。为什么它应该在 C 下工作,与 C++ 有什么区别?这种行为是否未定义且依赖于编译器?这段代码有多“糟糕”,如果我想重构它应该怎么做(我遇到过很多这样写的旧代码)?

0 投票
3 回答
2090 浏览

c++ - 我可以解开 GCC 的 RTTI 名称吗?

使用 gcc,当我使用 typeid 请求对象/变量的类型时,我从 type_info::name 方法得到的结果与我期望在 Windows 上得到的结果不同。我搜索了一下,发现 RTTI 名称是特定于实现的。

问题是,我想获得一个类型的名称,因为它将在 Windows 上返回。是否有捷径可寻?

0 投票
2 回答
1454 浏览

java - 如何在 Java 中解开 Windows 文件名?

从 Java 中,我将一个可执行文件提取到使用 File.createTempFile() 指定的位置。当我尝试运行我的可执行文件时,我的程序在尝试读取第一行输出时挂起。

我发现如果我尝试从另一个程序运行相同的提取可执行文件,如果我将目录指定为 C:\Documents and Settings\username\Local Settings\Temp\prog.exe,它就可以工作。但是,如果我将目录指定为 C:\DOCUME~1\USERNA~1\LOCALS~1\Temp\prog.exe 我就会挂起。

有没有办法在我的程序中解开波浪号文件名,以便我可以指定一个可以使用的目录名?

(而且由于我总是喜欢解决语言和 API 设计问题,有什么理由为什么 Java File.createTempFile() 和 java.io.tmpdir 必须评估损坏的文件名?)

0 投票
3 回答
875 浏览

asp.net - 内容页面中的 CSS 和控件名称修改

我有一个带有母版页的简单网站。要为内容页面上的元素(例如Textbox)设置属性,我使用 CSS。在设计器中它运行良好,但是当我启动一个网站时,一种样式不适用于控件。原因很简单。要说,我有一个TextBoxwith id="TextBox1"in content 页面,它是放在ContentPlaceHolder1. 在 CSS 文件中,我为具有 id 的对象设置属性#TextBox1。当我由于母版页名称修改而启动网站时,它会获得一个 ID ,该 IDctl00_ContentPlaceHolder1_TextBox1未在母版页中包含的 CSS 文件中定义。

这个问题的正确解决方案是什么?硬编码损坏的名称似乎并不好。