On Tuesday 31 March 2015 18:48:09 Robert Ramey wrote:
I made a few changes to simplify code in the serialization library. This entailed eliminating support for borland compilers, workarounds for compilers which fail to support partial specialization of template function and some general clean up. In the course of this effort, I had occasion to simplify the code which supports Auto linking - and by extension visibility. Things seemed to go pretty well. Feeling frisky, I added the switch -fvisibility=hidden to the gcc compile of library. Now applications won't link for lack of certain symbols. Well, they link and run fin on my machine here at home- but fail in the test matrix.
http://www.boost.org/development/tests/develop/developer/output/Debian-Sid-b oost-bin-v2-libs-serialization-test-test_array_binary_archive-test-gcc-4-9-2 -debug-address-model-64-architecture-x86.html
Funny thing is: doesn't seem to be a problem on my machine doesn't seem to occur with all exported symbols - only select ones - often but not always desctructors
I can switch Jamfile back so it doesn't specify -fvisibility=hidden, but it seems that I'm really close to being able to generate a smaller, cleaner DLL which I would prefer to do.
Any constructive suggestions would be appreciated.
I suspect base classes may be restricting visibility of your classes. From the docs[1]: A class must not have greater visibility than its non-static data member types and bases, and class members default to the visibility of their class. For example, basic_oarchive is marked with BOOST_ARCHIVE_OR_WARCHIVE_DECL but noncopyable and helper_collection which it derives from are not, and as such have hidden visibility. [1] https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gcc/Function-Attributes.html#Functi...