Opened 6 years ago
Last modified 5 years ago
#12516 reopened Bugs
Missing boost::serialization::array_wrapper in built serialization binary
Reported by: | Owned by: | Robert Ramey | |
---|---|---|---|
Milestone: | To Be Determined | Component: | serialization |
Version: | Boost Development Trunk | Severity: | Regression |
Keywords: | Cc: |
Description
When building code that links against libboost_serialization with the intel compiler I receive a link error saying
undefined reference to `boost::serialization::array_wrapper<unsigned long> const boost::serialization::make_array<unsigned long>(unsigned long*, unsigned long)
This bug is affecting also Boost MPI, that exploits Boost Serialization.
The bug is not present into Boost 1.59.0. I've not tried Boost 1.62.0.
Some more details:
OS: CentOS6
Compiler:
Intel 16, over gcc 4.9.2 (tried building with both -std=c++11 or -std=c++14).
Tried also with Intel 13, over gcc 4.8.5 (-std=c++11) and the issue is the same.
Change History (17)
comment:1 by , 6 years ago
comment:2 by , 6 years ago
never mind - I see that the intel test on the test matrix is failing for this very reason. Better yet, I know what's causing it. I'll try to fix this soon.
comment:3 by , 6 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
I've checked in a changed to the develop branch which I believe will address this
comment:4 by , 6 years ago
Thanks Robert.
I'm sorry but I was having this issue on proprietary code and I would have to write another source reproducing the error for being able to share it with you. I did not have the time to do this yesterday.
I'm glad you managed to find the cause of the issue on your own anyway.
Thanks again.
Best regards.
Michele De Stefano
comment:5 by , 6 years ago
Has this fix been included in 1.63.0? I do not see it in the release notes and still experience a serialization error with 1.63.0. Thank you.
comment:6 by , 6 years ago
Milestone: | Boost 1.63.0 → To Be Determined |
---|---|
Resolution: | fixed |
Status: | closed → reopened |
Version: | Boost 1.61.0 → Boost 1.63.0 |
Has this fix been included in 1.63.0? I do not see it in the release notes and still experience a serialization error with 1.63.0. Thank you.
comment:7 by , 6 years ago
I believe that this is fixed now in the develop branch. Should be in the next boost release. Feel free to check the develop branch and report back.
comment:8 by , 6 years ago
I can confirm that I get this error in Boost 1.63.0 as well as 1.62.0.
1.60.0 seems to be fine.
comment:10 by , 6 years ago
Version: | Boost 1.63.0 → Boost Development Trunk |
---|
Hello everyone:
I can also confirm that this error exists while compiling with gcc493 using the boost code from the git develop branch.
boost/numeric/ublas/storage.hpp:494:18: error: 'make_array' is not a member of 'boost::serialization'
ar & serialization::make_array(data_, s);
Thanks
comment:11 by , 6 years ago
I am using odeint and I have tried switching from Boost 1.63.0 to Boost 1.64.0. My previously compilable code now doesn't compile anymore when using MinGW-w64 with g++ 5.2.0. The compilation error reads:
In file included from D:\boost_1_64_0/boost/numeric/ublas/vector.hpp:21:0,
from D:\boost_1_64_0/boost/numeric/odeint/util/ublas_wrapper.hpp:23, from D:\boost_1_64_0/boost/numeric/odeint.hpp:25, from ..\src/Geodesics/GeodesicSolver.h:20, from ..\src\Geodesics\BoundaryConditions\WireStopCondition.cpp:12:
D:\boost_1_64_0/boost/numeric/ublas/storage.hpp: In member function 'void boost::numeric::ublas::unbounded_array<T, ALLOC>::serialize(Archive&, unsigned int)': D:\boost_1_64_0/boost/numeric/ublas/storage.hpp:299:18: error: 'make_array' is not a member of 'boost::serialization'
ar & serialization::make_array(data_, s);
comment:12 by , 5 years ago
Just to add to this, using Boost 1.64.0, Apple's clang-800.0.42.1 (Apple LLVM version 8.0.0, x86_64-apple-darwin15.6.0) reports:
…/numeric/ublas/storage.hpp:299:33: No member named 'make_array' in namespace 'boost::serialization' …/numeric/ublas/storage.hpp:494:33: No member named 'make_array' in namespace 'boost::serialization' …/numeric/ublas/matrix.hpp:5977:33: No member named 'make_array' in namespace 'boost::serialization'
The "include stack": …In file included from …/numeric/odeint/stepper/runge_kutta_dopri5.hpp:28: #include <boost/numeric/odeint/stepper/runge_kutta_dopri5.hpp> #include <boost/numeric/odeint/algebra/algebra_dispatcher.hpp> #include <boost/numeric/ublas/vector.hpp> #include <boost/numeric/ublas/storage.hpp>
The whole code still compiles fine using Boost 1.63.0
If there are other things I can report or analyze to be of any help, please let me know!
Best regards, BB
comment:13 by , 5 years ago
I also see the error in numeric/ublas/storage.hpp on Linux, GCC 4.8.2. No problems with 1.63.
comment:14 by , 5 years ago
I confirm that the error in storage.hpp still exists in 1.64.0 and can be reproduced on GCC 4.8.5 on Linux Mint 17
comment:15 by , 5 years ago
This is the fix missing in the v1.64 release for the "'make_array' is not a member of 'boost::serialization'" error
https://github.com/boostorg/serialization/commit/1d86261581230e2dc5d617a9b16287d326f3e229
comment:16 by , 5 years ago
This seems to work: there are no compilation error anymore (while the functionality of the executable code still seems to be the same). Thank you!
how about a small example which provokes the error