问题标签 [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.
c++ - 如何列出 .so 文件中的符号
如何列出从 .so 文件导出的符号?如果可能的话,我还想知道它们的来源(例如,如果它们是从静态库中提取的)。
我正在使用 gcc 4.0.2,如果这有什么不同的话。
c++ - 为什么我们需要 extern "C"{ #include在 C++ 中?
为什么我们需要使用:
具体来说:
我们应该什么时候使用它?
在需要我们使用它的编译器/链接器级别发生了什么?
这在编译/链接方面如何解决需要我们使用它的问题?
macos - OSX 10.5 Leopard Symbol Mangling with $non_lazy_ptr
为什么 Leopard 会用 $non_lazy_ptr 破坏一些符号?更重要的是,修复未定义符号错误的最佳方法是什么,因为符号已被 $non_lazy_ptr 破坏?
c++ - C++:找出修饰的名字
如何找出将分配给每个方法名称的修饰名称?我试图找出修饰名称是什么,以便我可以在 DLL 中导出它。
c++ - 解开 std::type_info::name 的结果
我目前正在编写一些日志代码,这些代码应该 - 除其他外 - 打印有关调用函数的信息。这应该是比较容易的,标准C++有一个type_info
类。这包含 typeid 的类/函数/等的名称。但它被破坏了。它不是很有用。即typeid(std::vector<int>).name()
返回St6vectorIiSaIiEE
。
有没有办法从中产生有用的东西?就像std::vector<int>
上面的例子一样。如果它只适用于非模板类,那也没关系。
该解决方案应该适用于 gcc,但如果我可以移植它会更好。它是用于记录的,所以它不是很重要,不能关闭,但它应该有助于调试。
c++ - 在 C++ 中查看编译器错位名称
如何查看 C++ 中重载函数的编译器生成的重载名称?我正在使用 VC9,但也欢迎其他编译器的答案。
编辑:我在这里找到所有有用的答案。接受我最喜欢的那个。
c++ - typeid() 在 g++ 中返回额外的字符
上面的代码使用 g++ 在我的 ubuntu 机器上打印P3foo 。我不明白为什么要打印P3foo而不是foo。如果我更改代码
它打印3foo。
有什么想法吗?
c++ - 构建 PHP 扩展时如何检查未损坏的 C++ 符号?
我有一个用 C++ 编写的 PHP 模块,它依赖于安装的 C++ 库(Boost Date_Time)。
目前,在我的 config.m4 文件中,我正在检查库,如下所示:
现在,这适用于我当前的环境,但我痛苦地意识到这可能会在不同版本的库或编译器上中断。
如何让 automake 理解未损坏的 C++ 符号?
编辑:
我意识到检查损坏的名称是可怕的,但是没有某种方法可以检查“nm -C”返回的符号名称(例如 boost::gregorian::bad_month 等)。
我发现了一些对 automake 命令 AC_LANG_CPLUSPLUS() 的参考,但我不确定如何使用它以及它是否适用于这里。
c++ - 有没有办法抑制 c++ 名称修改?
我有一个用 C++ 编写的 DLL,我想抑制一些导出方法的名称修改。这些方法是全局的,不是任何类的成员。有没有办法做到这一点?
顺便说一句:我正在使用 VS2008。
gcc - 使用 g++ 如何链接使用 gcc 构建的库?
我正在尝试将使用 gcc 构建的 .a 库链接到使用 g++ 构建的程序。但是名称 mangling 是不同的。我怎样才能做到这一点?谢谢,CP