程序代码如下:
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include "llvm/Demangle/Demangle.h"
int main ()
{
const char* pcmangledname = "_ZNSsaSEPKc";
int status = 0;
char * demangled = NULL;
if ((demangled = llvm::itaniumDemangle(pcmangledname, NULL, &size, &status)) != NULL) {
printf("Success to demangle _ZNSsaSEPKc:%s\n",demangled);
}
else
{
printf("Fail to demangle");
}
if ((demangled = llvm::itaniumDemangle("_Z9getStringRSs", NULL, NULL, &status)) != NULL) {
printf("Success to demangle _Z9getStringRSs :%s\n",demangled);
}
if ((demangled = llvm::itaniumDemangle("_Z13getIntVector1St6vectorIiSaIiEE", NULL, NULL, &status)) != NULL) {
printf("Success to demangle _Z13getIntVector1St6vectorIiSaIiEE :%s\n",demangled);
}
if ((demangled = llvm::itaniumDemangle("_Z10getString2RSs", NULL, NULL, &status)) != NULL) {
printf("Success to demangle _Z10getString2RSs :%s\n",demangled);
}
free(demangled);
return 0;
}
将LLVM的头文件复制到当前代码的路径下,例如:/opt/test/include, 编译时,使用命令:g++ -I./include test.cpp libLLVMDemangle.a,然后路径下面就会出现一个a.out,执行a.out,就可以看到demangle的结果。