Re: [Boost.Serialization] Exception during serialization through base pointer DLL & EXE

Gavin Lambert via Boost-users <[email protected]>
Newsgroups gmane.comp.lib.boost.user
Message-ID <[email protected]>
On 6/03/2022 00:21, Marc Viala wrote:
> On our platform (VS2019, Windows x64, Boost 1.77) an exception occurs 
> during the serialization of an instance through its base pointer. This 
> error is systematic and I was able to reproduce w/ a minimal use test 
> (cf. enclosed archive). This use case includes a solution w/ a DLL 
> project and EXE project. The EXE project is a simple unit-test. On my 
> platform  when I execute the executable, I trigger an exception from 
> Boost.Serialization ("unregistered void cast class cpe::derived_t<-class 
> cpe::object_t"). I tried every recommandation that we can find on SO and 
> Boost mailing lists without success. To be accurate, I prefer to mention 
> that we are using Boost.Serialization Static Library flavor.

This last sentence is the cause of your problem.

If you wish to use static libraries, then you must use *only* static 
libraries (or at least anything that is in a static library cannot 
appear in your DLL ABI at all).

If you wish to use Boost.Serialization in your DLL ABI then you must use 
the shared library variant only, such that both your EXE and DLL use a 
common implementation.  Otherwise they will each have independent copies 
of the singletons.

If your DLL boundary exists only for unit testing, then switch your DLL 
to a static library instead.  If it exists for consuming by applications 
other than just your unit test, then you have to ensure that Boost types 
and concepts do not cross the DLL boundary if you want to use them as a 
static library.
_______________________________________________
Boost-users mailing list
[email protected]
https://lists.boost.org/mailman/listinfo.cgi/boost-users
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.