错误:'make_array'不是'boost :: serialization'的成员。

11
我无法编译一个基本的boost向量示例。我使用的是Windows 10操作系统,nuwen MinGW发行版15.0版本,不包括git。该版本包含GCC 7.10和Boost 1.64。我已经解压了MinGw并将其放置在文件系统的根目录下,我正在按照MinGW使用说明A运行set_distro_paths.bat。以下是代码,在我的系统上构建失败:

vector-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库内部的包含文件中的文件引起的。有哪些更改可以在应用程序级别的代码或Makefile中进行,以允许程序编译?


你是如何安装boost的? - πάντα ῥεῖ
1个回答

14

是的,这是ublas头文件的一个问题。我以前遇到过这个问题。您可以通过包含来解决它。

#include <boost/serialization/array_wrapper.hpp>

然而,在那之前,我会考虑向ublas代码的维护者报告此问题。


这个可以工作!但是只有在你把array_wrapper的include放在vector的include之前时才有效。 - user1509669
现在都已经2017年了,怎么还没有修复呢? - DrDirk
2
@知识,仅供参考,那是2017年6月。 - sehe
@sehe 在6月14日12:12回答说,我也看到ublast自2009年以来没有被“显着”更新,所以:D我想我会坚持使用数值配方。 - DrDirk
@Knowledge 是的,才一个月前。_[你是指2014年6月吗?]_ 据我所知,NR自1996年以来就没有更新过(我的副本是C,自1992年以来),除非你指的是需要Flash的ICTP版本,所以我不知道。另外,ublast听起来像是一个很棒的库名称 :) - sehe
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接