[英]Does an undefined symbol from a vtable imply an error between interface and implementation?
[英]EMF file(.so) debugging, symbol not found VTable error
在Solaris中,我有一个exe文件,我需要添加一个共享库(.so)来扩展功能。 我创建了一个lthmyplugin.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%的情况下,是不可能的。 你可以告诉gcc不要通过添加__attribute __((cdecl))来破坏你的函数,如下所示:
int not_mangled(int some_arg) __attribute__((cdecl))
{
return some_arg * 3;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.