
Hi, We have an application comprised of many shared libraries. It is built on Windows using mingw (gcc 4.4) and on Mac OS X using gcc under the Qt 4.7.0 framework. The application has been based on boost 1_41. We are now attempting to port to boost 1_49. We use boost.serialization and other boost libraries as dlls. On Mac OS X the upgrade was mostly trouble free, but with mingw we have encountered problems with all of our libraries that use boost.serialization. Basically, the inclusion of boost.serialization code appears to alter the default symbol visibility of the dlls generated by mingw. Each of our libraries consists of a declaration of a class, with public functions, and zero or more free functions. If the library implementation includes boost.archive or boost.serialization the public functions of the class, and any free functions declared, are missing from the import library, though visible in the dll. Each of our libraries has a test executable, and with many it is a trivial task to comment out the use of boost.serialization in the library and test code. When we do that, there are no linker problems. As soon as we reintroduce functions that use boost.serialization into the library, the test function fails to find the public functions of the library class. Please can anyone explain this? How does the use of boost.serialization change the global behaviour of mingw gcc in generating dll import libraries? TIA Ken Appleby