在dlopen期间的未定义的符号

时间:2017-12-19 15:43:51

标签: c++ linux

尝试加载共享库:

handle = dlopen( "libaaa.so.2.5", RTLD_NOW );
  if ( !handle )
    {
      printf("Failed to open aaa lib: %s\n", dlerror());
      return 1;
    }

当我跑./myBinary出错:

undefined symbol: _ZTVN10__cxxabiv117__class_type_infoE

这个符号是什么意思?如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

可执行文件可能需要-lstdc++。如果与gcc相关联,请与g++链接,它会链接到C ++标准库中。

答案 1 :(得分:0)

运行(在您的Linux或Unix系统上,使用GCC或Clang作为其C ++编译器)c++filt _ZTVN10__cxxabiv117__class_type_infoE命令来解码CBCentralManagerShowPowerAlertKey。它告诉

 vtable for __cxxabiv1::__class_type_info

因此,您应该将可执行二进制文件(或者您的libaaa.so.2.5共享库)与标准C ++库链接(如name mangling所示)。