
When trying to link a bunch of libraries on OS X, I got this linker warning: ld: warning: direct access in boost::system::system_error::~system_error() to global weak symbol vtable for boost::system::system_error means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings. As far as I can tell, everything is compiled using the flags -fvisibility=hidden -fvisibility-inlines-hidden. I'm wondering whether the problem is that some of the libraries were built using gcc and some were built using Clang. In boost/system/system_error.hpp, the declaration of boost::system::system_error is decorated with BOOST_SYMBOL_VISIBLE. In boost/config/compiler/gcc.hpp, BOOST_SYMBOL_VISIBLE is defined to be __attribute__((visibility("default"))), whereas boost/config/compiler/clang.hpp does not define BOOST_SYMBOL_VISIBLE. -- James W. Walker, Innoventive Software LLC http://www.frameforge3d.com/