Boost logo

Boost :

Subject: Re: [boost] [serialization] Errors when testing withe mingw-64/gcc on Windows
From: Robert Ramey (ramey_at_[hidden])
Date: 2015-07-18 10:04:24


On 7/17/15 10:51 PM, Edward Diener wrote:
> When running serialization tests with mingw-64/gcc on Windows I get
> repeated errors of the form:
>
> ..\..\../boost/archive/detail/basic_oarchive.hpp:64:5: error: function
> 'boost::archive::detail::helper_collection&
> boost::archive::detail::basic_oarchive::get_helper_collection()'
> definition is marked dllimport
> get_helper_collection(){
>
> Is this a known problem ?
>
> Testing with VC++ does not give any errors.
>
>
> _______________________________________________
> Unsubscribe & other changes:
> http://lists.boost.org/mailman/listinfo.cgi/boost
>

A couple of months ago I made efforts to limit symbol visibility on
compilers other than Visual Studio. This was to resolve complaints
about the serialization library exporting many more symbols than
necessary on these platforms. This turned out to be quite a bit more
intricate than I expected as there's some confusion between vs and other
platforms on this point and they use different syntax. I managed to get
it all together - except for MinGW - which still has problems in this
area. I noticed it was failing the MinGW tests (when they were being
run). But I couldn't really fix it because I have neither Visual Studio
nor MinGW.

As I said, it turned out some what more complex than I expected due to
one thing in particular. The wide version of the DLL exports it's own
symbols, but import symbols from the the base version of the DLL. So
one has to get it just right. For a while I was experiencing the
situation where fixing it for one version would create problems in the
other. I never could figure out which syntax MinGW uses. If one has
all three (or four) platforms gcc, mingw, clang, and Visual studion and
some patience it's an easy fix - once you discover it. But without this
setup, it's sort of chasing one's tail.

So if you want to do this, I would be grateful. Not that if you get it
wrong, it shows up in some tests but not in others. So one has to be
prepared to run the whole serialization test suite before declaring victory.

Robert Ramey


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk