2017-06-14 88 views
5

Nie mogę skompilować basic boost vector example. Jestem na Windows 10, a ja używam wersji 01., bez git. Ta wersja zawiera GCC 7.10 i Boost 1.64. Rozpakowałem MinGw i umieściłem go w katalogu głównym mojego systemu plików i postępuję zgodnie z instrukcją A dotyczącą korzystania z MinGW, aby uruchomić set_distro_paths.bat. Poniżej znajduje się kod, który nie udaje się zbudować w moim systemie:error: 'make_array' nie jest członkiem 'boost :: serializacja

wektor-fail.cpp:

#include <boost/numeric/ublas/vector.hpp> 
#include <boost/numeric/ublas/io.hpp> 

int main() { 
    using namespace boost::numeric::ublas; 
    vector<double> v (3); 
    for (unsigned i = 0; i < v.size(); ++ i) 
     v (i) = i; 
    std::cout << v << std::endl; 
} 

Makefile:

vector-fail: vector-fail.o 
    g++ vector-fail.o -o vector-fail 
vector-fail.o: vector-fail.cpp 
    g++ -c vector-fail.cpp -o vector-fail.o 

wyjściowe:

g++ -c vector-fail.cpp -o vector-fail.o 
In file included from C:\MinGW\include/boost/numeric/ublas/vector.hpp:21:0, 
       from vector-fail.cpp:1: 
C:\MinGW\include/boost/numeric/ublas/storage.hpp: In member function 'void 
boost::numeric::ublas::unbounded_array<T, ALLOC>::serialize(Archive&, unsigned int)': 
C:\MinGW\include/boost/numeric/ublas/storage.hpp:299:33: error: 'make_array' is not a member of 'boost::serialization' 
       ar & serialization::make_array(data_, s); 
            ^~~~~~~~~~ 
C:\MinGW\include/boost/numeric/ublas/storage.hpp:299:33: note: suggested alternative: 'make_nvp' 
      ar & serialization::make_array(data_, s); 
           ^~~~~~~~~~ 
          make_nvp 
C:\MinGW\include/boost/numeric/ublas/storage.hpp: In member function 'void boost::numeric::ublas::bounded_array<T, N, ALLOC>::serialize(Archive&, unsigned int)': 
C:\MinGW\include/boost/numeric/ublas/storage.hpp:494:33: error: 'make_array' is not a member of 'boost::serialization' 
      ar & serialization::make_array(data_, s); 
           ^~~~~~~~~~ 
C:\MinGW\include/boost/numeric/ublas/storage.hpp:494:33: note: suggested alternative: 'make_nvp' 
      ar & serialization::make_array(data_, s); 
           ^~~~~~~~~~ 
           make_nvp 
make: *** [Makefile:5: vector-fail.o] Error 1 

Niestety żaden z tych błędów nie pojawia się w moim kodzie, a raczej są spowodowane plikami w plikach włączających w ramach boostu l ibrary się. Jakie zmiany można wprowadzić w kodzie poziomu aplikacji lub Makefile, aby umożliwić programowi kompilację?

+0

Jak zainstalowałeś boost? –

Odpowiedz

6

Tak, jest to problem z nagłówkami ublas. Wpadłem na to wcześniej. Przed obejściem tego problemu można go obejść, włączając w to

#include <boost/serialization/array_wrapper.hpp> 
Rozważę zgłoszenie tego do opiekunów kodu ublas.

+0

To działa! Ale tylko wtedy, gdy umieścisz include dla array_wrapper przed dołączeniem do wektora. – user1509669

+0

w 2017 r. I wciąż nie ma rozwiązania? – Knowledge

+2

@Knowledge W czerwcu również było 2017, dla twojej informacji. – sehe