On Saturday, 7 September 2013 at 21:41:01 UTC, Benjamin Thaut
wrote:
I don't agree if that statement. If you have three libs. lib1,
lib2 and lib3. And lib2 and lib3 link statically against lib1
you are going to get linker errors because both lib2 and lib3
contain the symbols of lib1. And you don't have any options to
avoid that (unless you got into the source of lib1 and remove
all export attributes, which might not even be possible because
you don't have the source)
And you should have an error, especially is you pass object from
one side to the other.
typeid won't match (which will create a mess in the runtime), and
worse, struct layout may not match (hello memory corruption).
If the problem is that big, we can still have a -noexport flag or
something, but that doesn't seems really safe to me.