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

c++ - 如何列出 .so 文件中的符号

如何列出从 .so 文件导出的符号?如果可能的话,我还想知道它们的来源(例如,如果它们是从静态库中提取的)。

我正在使用 gcc 4.0.2,如果这有什么不同的话。

0 投票
11 回答
88286 浏览

c++ - 为什么我们需要 extern "C"{ #include在 C++ 中?

为什么我们需要使用:

具体来说:

  • 我们应该什么时候使用它?

  • 在需要我们使用它的编译器/链接器级别发生了什么?

  • 这在编译/链接方面如何解决需要我们使用它的问题?

0 投票
5 回答
6251 浏览

macos - OSX 10.5 Leopard Symbol Mangling with $non_lazy_ptr

为什么 Leopard 会用 $non_lazy_ptr 破坏一些符号?更重要的是,修复未定义符号错误的最佳方法是什么,因为符号已被 $​​non_lazy_ptr 破坏?

0 投票
6 回答
8570 浏览

c++ - C++:找出修饰的名字

如何找出将分配给每个方法名称的修饰名称?我试图找出修饰名称是什么,以便我可以在 DLL 中导出它。

0 投票
14 回答
50255 浏览

c++ - 解开 std::type_info::name 的结果

我目前正在编写一些日志代码,这些代码应该 - 除其他外 - 打印有关调用函数的信息。这应该是比较容易的,标准C++有一个type_info类。这包含 typeid 的类/函数/等的名称。但它被破坏了。它不是很有用。即typeid(std::vector<int>).name()返回St6vectorIiSaIiEE

有没有办法从中产生有用的东西?就像std::vector<int>上面的例子一样。如果它只适用于非模板类,那也没关系。

该解决方案应该适用于 gcc,但如果我可以移植它会更好。它是用于记录的,所以它不是很重要,不能关闭,但它应该有助于调试。

0 投票
6 回答
5537 浏览

c++ - 在 C++ 中查看编译器错位名称

如何查看 C++ 中重载函数的编译器生成的重载名称?我正在使用 VC9,但也欢迎其他编译器的答案。

编辑:我在这里找到所有有用的答案。接受我最喜欢的那个。

0 投票
3 回答
11972 浏览

c++ - typeid() 在 g++ 中返回额外的字符

上面的代码使用 g++ 在我的 ubuntu 机器上打印P3foo 。我不明白为什么要打印P3foo而不是foo。如果我更改代码

它打印3foo

有什么想法吗?

0 投票
4 回答
508 浏览

c++ - 构建 PHP 扩展时如何检查未损坏的 C++ 符号?

我有一个用 C++ 编写的 PHP 模块,它依赖于安装的 C++ 库(Boost Date_Time)。

目前,在我的 config.m4 文件中,我正在检查库,如下所示:

现在,这适用于我当前的环境,但我痛苦地意识到这可能会在不同版本的库或编译器上中断。

如何让 automake 理解未损坏的 C++ 符号?

编辑:

我意识到检查损坏的名称是可怕的,但是没有某种方法可以检查“nm -C”返回的符号名称(例如 boost::gregorian::bad_month 等)。

我发现了一些对 automake 命令 AC_LANG_CPLUSPLUS() 的参考,但我不确定如何使用它以及它是否适用于这里。

0 投票
3 回答
9513 浏览

c++ - 有没有办法抑制 c++ 名称修改?

我有一个用 C++ 编写的 DLL,我想抑制一些导出方法的名称修改。这些方法是全局的,不是任何类的成员。有没有办法做到这一点?

顺便说一句:我正在使用 VS2008。

0 投票
1 回答
345 浏览

gcc - 使用 g++ 如何链接使用 gcc 构建的库?

我正在尝试将使用 gcc 构建的 .a 库链接到使用 g++ 构建的程序。但是名称 mangling 是不同的。我怎样才能做到这一点?谢谢,CP