$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
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://listarchives.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