EMF文件(.so)调试,符号找不到VTable错误

EMF file(.so) debugging, symbol not found VTable error

本文关键字:符号 找不到 VTable 错误 调试 文件 so EMF      更新时间:2023-10-16

在Solaris中,我有一个exe文件,根据指导原则,我需要添加一个共享库(.so)来扩展功能。我已经创建了一个lthmyplugin.so文件,并按照描述进行了添加。现在utlity运行得很好,直到它调用了我的函数。调用我的函数后,它失败了。

问题:

  1. 有什么方法可以调试吗
  2. 当我运行命令特拉斯时,它会识别aa.so

此外,ldd-d lthmyplugin.so除了之外没有显示任何错误

    symbol not found: __1cIMyPluginG__vtbl_         (./lthmyplugin.so)    
    symbol not found: __1cIThPluginG__vtbl_         (./lthmyplugin.so)    
    symbol not found: __1cOThLocalOptionsG__vtbl_           (./lthmyplugin.so)    
    symbol not found: __1cJThOptionsG__vtbl_                (./lthmyplugin.so)     

这会导致程序失败吗?

fyi,我没有使用和任何虚拟函数,构造函数或析构函数

这意味着什么符号找不到:_1cIThPluginG_vtbl_?

谢谢,

您可以使用nm工具查看so文件公开的函数。您可以拨打:

nm -g lthmyplugin.so

查看它公开了哪些功能。

除此之外,鉴于您已经将其标记为C++,我将尝试问:您是否指定了C风格的调用约定?如果你不这样做,它会把名字弄乱,使它们变得丑陋、不可读,在99.9%的情况下,它们是不可读的。您可以通过添加__attribute__((cdecl))来告诉gcc不要破坏您的函数,如下所示:

int not_mangled(int some_arg) __attribute__((cdecl))
{
    return some_arg * 3;
}