我对C++和armadillo不太熟悉,遇到了以下构建错误。我尝试测试以下简单代码,将一个armadillo矩阵保存为hdf5文件:
#include <iostream>
#include <armadillo>
using namespace std;
using namespace arma;
int main()
{
mat A = randu<mat>(240,320);
A.save("A.hdf5",hdf5_binary);
return 0;
}
编译时,我遇到了以下错误:
/usr/include/armadillo_bits/hdf5_misc.hpp:131: undefined reference in « arma_H5T_NATIVE_DOUBLE »
/usr/include/armadillo_bits/hdf5_misc.hpp:131: undefined reference in « arma_H5Tcopy »
obj/Debug/main.o: in function « bool arma::diskio::save_hdf5_binary<double> (arma::Mat<double> const&, std::string const&) »:
/usr/include/armadillo_bits/diskio_meat.hpp:1299: undefined reference in « arma_H5Eset_auto »
/usr/include/armadillo_bits/diskio_meat.hpp:1308: undefined reference in « arma::H5check_version(unsigned int, unsigned int, unsigned int) »
/usr/include/armadillo_bits/diskio_meat.hpp:1308: undefined reference in « arma_H5Fcreate »
/usr/include/armadillo_bits/diskio_meat.hpp:1315: undefined reference in « arma_H5Screate_simple »
/usr/include/armadillo_bits/diskio_meat.hpp:1324: undefined reference in « arma_H5Dcreate »
/usr/include/armadillo_bits/diskio_meat.hpp:1330: undefined reference in « arma_H5Dwrite »
/usr/include/armadillo_bits/diskio_meat.hpp:1333: undefined reference in « arma_H5Dclose »
/usr/include/armadillo_bits/diskio_meat.hpp:1334: undefined reference in « arma_H5Tclose »
/usr/include/armadillo_bits/diskio_meat.hpp:1335: undefined reference in « arma_H5Sclose »
/usr/include/armadillo_bits/diskio_meat.hpp:1336: undefined reference in « arma_H5Fclose »
编译指令如下:
g++ -Wall -fexceptions -O2 -g -larmadillo -lhdf5 -c main.cpp -o main
我正在linux Fedora 20系统上使用CodeBlocks开发,我已经安装了HDF5-devel包并通过
/usr/include/
找到了hdf5.h头文件。我在config.hpp
文件中使用#define ARMA_USE_HDF5
激活了Armadillo中的hdf5插件。我使用最新版本的Armadillo (4.450)和gcc 4.8.3编译器。我是否遗漏了什么?按照Armadillo用户指南中所述添加-larmadillo和-lhdf5应该足够了。有什么线索吗?谢谢。