2012/10/25 Vicente J. Botet Escriba
Le 25/10/12 15:07, Сергей Захарченко a écrit :
I assume that I need to eliminate tss_pe.cpp from linkage, but I don't seem to be able to. Adding a
namespace boost { void tss_cleanup_implemented() {} }
to one of the library's sources doesn't help, as it results in a multiply defined symbol error (compiler MSVC2008 from Express edition).
there are some tickets on the Trac system concerning this issue in Boost.Thread. Unfortunately I have not yet a clear vision of what needs to be done. I don't promise you anything, but I would like to have enough time to fix these issues for next release.
JFYI: our current solution integrated into our build system (CMake, MSVC) is: * Rename the Boost.Thread library into 'original_boost_thread'. * Add a custom target named 'patched_boost_thread' which uses dumpbin and lib utilities to delete just the tss_pe.obj object from Boost.Thread. * Add a library called boost_thread which links to 'patched_boost_thread' and contains a file named tss_pe.cpp which contains the aforementioned code (essentially it's the 'null tss cleanup implementation'). I know it's perverted (no, patching the Boost.Thread source is not an option for me), but it does exactly what seems to be the original intent: replace the tss_pe.obj with a stub. Targets which don't need plugin functionality can still link to original_boost_thread and (potentially) benefit from the automatic cleanup. Best regards, -- DoubleF