This is about plugin features in my program. I need a C++ class(and object) in a plugin could be used by main module through an interface. The interface inheritance like this:
You're problem may be the private inheritance:
_rwd_autocomplete_plugin_base_t : _rwd_plugin_base_t
Also I think because you have virtual functions your types are already polymorphic, but wouldn't hurt to add virtual destructors.
Edit: Sorry just realized you're using struct
there so the default inheritance is public. But probably best to be explicit, especially since you're seeing differences between compilers.
you might try building with -Wl,--export-dynamic
linker argument. I recall needing this argument when encountering similar behavior.