
Hi Robert, I tried the test_dll_plugin (with CMAKE under Linux) that seems to cover my case. add_executable(test_dll_plugin test_dll_plugin.cpp polymorphic_base.cpp) target_link_libraries(test_dll_plugin dl boost_serialization boost_filesystem) add_library(plugin_polymorphic_derived2 SHARED polymorphic_derived2.cpp) it compiles (under Linux) but during execution I get: test_dll_plugin: /usr/include/boost/serialization/singleton.hpp:137: static T& boost::serialization::singleton<T>::get_mutable_instance() [with T = boost::archive::detail::extra_detail::guid_initializer<polymorphic_derived2>]: Assertion `! is_locked()' failed. If I make an ldd of both the executable ldd test_dll_plugin linux-vdso.so.1 => (0x00007fff0d56d000) libdl.so.2 => /lib64/libdl.so.2 (0x00007f547aaab000) libboost_serialization-1_49.so.1.49.0 => /usr/lib64/libboost_serialization-1_49.so.1.49.0 (0x00007f547a835000) libboost_filesystem-1_49.so.1.49.0 => /usr/lib64/libboost_filesystem-1_49.so.1.49.0 (0x00007f547a610000) libstdc++.so.6 => /usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/libstdc++.so.6 (0x00007f547a301000) libm.so.6 => /lib64/libm.so.6 (0x00007f547a07d000) libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f5479e66000) libc.so.6 => /lib64/libc.so.6 (0x00007f5479ad4000) libboost_system-1_49.so.1.49.0 => /usr/lib64/libboost_system-1_49.so.1.49.0 (0x00007f54798d0000) /lib64/ld-linux-x86-64.so.2 (0x00007f547acaf000) and the shared object ldd libplugin_polymorphic_derived2.so linux-vdso.so.1 => (0x00007fffd332b000) libstdc++.so.6 => /usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/libstdc++.so.6 (0x00007ffa4936c000) libm.so.6 => /lib64/libm.so.6 (0x00007ffa490e7000) libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007ffa48ed0000) libc.so.6 => /lib64/libc.so.6 (0x00007ffa48b3e000) /lib64/ld-linux-x86-64.so.2 (0x00007ffa498fa000) the strange is that there is no dynamic linking to libboost_serialization inside the libplugin_polymorphic_derived2.so. So ... did I make some error in the project organization or are there any comile option or define I missed? I wonder - for example - if I should link the executable against the multithread version of the serialization library (I guess not ...). Many thanks Giampiero
Giampiero Gabbiani wrote:
So far, is there a complete example of boost.serialization of plugins with private implementation in shared object?
There are some tests and demo for this case. Have you checked in the libs/serialization/test and libs/serialization/example directories?
Robert Ramey