-
Separate symbol tables are required in each shared library.
-
RTTI merging: Some compilers do it. Some don't.
-
Optimizations are harder because the code must be position independent.
-
The following may break binary compatibility between an application and
a shared library (among other things):
-
Any part of shared class changes. Variable ordering, publicprivate
protected, virtual function implementations, addremove variables
functions etc.
-
Different compiler or compiler options used, or headers included differently.