error: 'make_array' is not a member of 'boost::serialization
error: 'make_array' is not a member of 'boost::serialization
我无法编译 basic boost vector example。
我在 Windows 10,我使用的是 nuwen MinGW distro 版本 15.0,不包括 git。此版本包含 GCC 7.10 和 Boost 1.64。我解压了 MinGw 并将其放在我的文件系统的根目录中,我正在按照 MinGW 使用说明 A 到 运行 set_distro_paths.bat。以下是无法在我的系统上构建的代码:
向量-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;
}
生成文件:
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
不幸的是 none 这些错误是在我的代码中发生的,而是由 boost 库本身的包含文件中的文件引起的。可以对应用程序级代码或 Makefile 进行哪些更改以允许程序编译?
是的,这是 ublas headers 的问题。我运行进去过。您可以通过包含
来解决它
#include <boost/serialization/array_wrapper.hpp>
不过在那之前。我会考虑将它报告给 ublas 代码的维护者。
我无法编译 basic boost vector example。 我在 Windows 10,我使用的是 nuwen MinGW distro 版本 15.0,不包括 git。此版本包含 GCC 7.10 和 Boost 1.64。我解压了 MinGw 并将其放在我的文件系统的根目录中,我正在按照 MinGW 使用说明 A 到 运行 set_distro_paths.bat。以下是无法在我的系统上构建的代码:
向量-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;
}
生成文件:
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
不幸的是 none 这些错误是在我的代码中发生的,而是由 boost 库本身的包含文件中的文件引起的。可以对应用程序级代码或 Makefile 进行哪些更改以允许程序编译?
是的,这是 ublas headers 的问题。我运行进去过。您可以通过包含
来解决它#include <boost/serialization/array_wrapper.hpp>
不过在那之前。我会考虑将它报告给 ublas 代码的维护者。