如何在clang(或gcc)中解析C++名称?

4
我正试图为clang编写一个快速而简单的名称还原程序。我找到了一段使用abi::__cxa_demangle代码片段,但我无法确定它需要哪个头文件。显然的选择是ABI.h,但是:
demangle.cpp:2:10: fatal error: 'ABI.h' file not found
#include <ABI.h>
         ^

我需要什么来使用abi::__cxa_demangle?

2个回答

6

需要包含 cxxabi.h 头文件。在 Ubuntu 13 中,该头文件位于 /usr/include/c++/4.x 目录下,其中 x 是 GCC 的次要版本号。


这不是我的linux发行版的一部分,也不是llvm C++标准库的一部分。那我该怎么办?在gcc包含路径中有一个cxxabi.h,但它能与clang++ -stdlib=libc++一起工作吗? - Walter
@Walter 尝试使用 #include <cxxabi.h> 而不添加任何特殊的包含路径。另外,看看 c++filt 是否足够满足您的需求。 - Adam
@Adam 那个(#include <cxxabi.h>)就是我所做的。不,c++filt对我的需求来说不够 :-(( - Walter
@Walter 我不知道。Clang在OSX上包含它,所以我不明白为什么它不会通过某些软件包可用。我认为你不能假设你可以使用gcc的。 - Adam
@Walter,你是否已经安装了libstdc++-4.8-dev或者libc++-dev(或者在你的发行版中安装了相应编译器的等效库)? - Massa

1

需要包含 cxxabi.h,但对于 Ubuntu 上的 clang,您需要安装 libc++abi-dev 包。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接