2017-06-14 214 views
5

我无法编译basic boost vector example。 我在Windows 10上,并且我使用的是版本15.0的nuwen MinGW distro,没有包含git。该版本包含GCC 7.10和Boost 1.64。我已经解压MinGw并将其放在我的文件系统的根目录下,我正在按照MinGW使用说明A运行set_distro_paths.bat。下面是代码,这是不能建立在我的系统:错误:'make_array'不是'boost :: serialization的成员

矢量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 

输出:

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 

不幸我的代码中没有发生这些错误,而是由boost中的include文件内的文件引起的图书馆的自我。在应用程序级代码或Makefile中可以进行哪些更改以允许程序编译?

+0

你是怎么安装boost的? –

回答

6

是的,这是ublas标题的问题。我之前遇到过它。你可以通过包括

#include <boost/serialization/array_wrapper.hpp> 

之前的那点。我会考虑将其报告给ublas代码的维护者。

+0

这个工程!但是,只有当您将include for array_wrapper放在include for vector之前。 – user1509669

+0

其2017年,仍然没有解决? – Knowledge

+2

@Knowledge 6月份也是2017年,供您参考。 – sehe

相关问题