简体   繁体   中英

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

In Solaris I have an exe file as per the guideline I need to add a shared library (.so) to extend the functionality. I have created a lthmyplugin.so file and added as described. Now the utlity run perfectly fine untill it calls my function After calling my function it fails.

Questions:

  1. Is there any way to debug?
  2. When I run the command truss it identifies aa.so

Also ldd -d lthmyplugin.so show no error except

    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)     

Can this cause the programme to fail?

fyi, I have not used and any virtual function,constructors or destructors

What does this mean symbol not found: _ 1cIThPluginG _vtbl_ ?

Thanks,

You can use the nm tool to see the functions exposed by the so file. You can call:

nm -g lthmyplugin.so

... To see what functionality it exposes.

Besides that, given you've tagged this as C++, I'm going to take a stab and ask: did you specify a C style calling convention? If you didn't, it will mangle the names making them ugly, unreadable and in 99.9% of cases, unfindable. You can tell gcc not to mangle your functions by adding __attribute__((cdecl)) , like so:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM