[C++-sig] Re: cross-module RTTI issues

David Abrahams dave at boost-consulting.com
Tue Mar 15 19:10:40 CET 2005


Dan Haffey <dan at theproverbial.com> writes:

> I'm not sure if this is even the right place to post this question, but I'm 
> having some trouble with inheritance across shared library boundaries. I've 
> read the CrossExtensionModuleDependencies Wiki node, and I assume that my 
> problem stems from std::type_info comparison problems, so my question is 
> basically: how do I go about making sure my RTTI info is all coming from the 
> same place?
>
> I'm specifically referring to this snippet from the Wiki:
> "The best way to achieve that is to link both extension modules to a common 
> shared library using the global model, and put the RTTI information there."
>
> I'm not sure how exactly I get all the relevant RTTI information into that 
> third library.

Put the base classes there.  What it takes to generate the RTTI
information will vary from compiler-to-compiler.  Usually implementing
one virtual function there is enough.  Sometimes even a non-virtual
function is sufficient.  If your base classes have only pure virtual
functions, you can still provide an implementation for one.  If all
else fails, you might try putting a dummy function in that library
that uses dynamic_cast<Derived*>(some_base_ptr).

Good luck!

-- 
Dave Abrahams
Boost Consulting
www.boost-consulting.com




More information about the Cplusplus-sig mailing list