HDF5 - C ++ - 打开文件读取内容失败

时间:2014-03-26 14:49:25

标签: c++ linker-errors hdf5

我尝试编写一个非常简短的脚本只是为了打开一个hdf5文件,但它不起作用。

#include <iostream>
#include "H5Cpp.h"

#ifndef H5_NO_NAMESPACE
    using namespace H5;
#endif

const H5std_string FILE_NAME( "testfile.h5" );

int main (void)

{

    H5File openFile( FILE_NAME, H5F_ACC_RDONLY );

}

我很确定我包含了hdf5库和包含的路径。 但是,我从链接器收到错误消息:

Invoking: GCC C++ Linker
g++ -L/usr/local/pub/lib64 -L/usr/local/pub/lib -L/lib64 -L/usr/lib64 -o "HDF5_CPP"  ./openfile.o   
./openfile.o: In function `main':
/athome/augs_ay/workspace/HDF5_CPP/Debug/../openfile.cpp:18: undefined reference to `H5check_version'
/athome/augs_ay/workspace/HDF5_CPP/Debug/../openfile.cpp:18: undefined reference to `H5::FileAccPropList::DEFAULT'
/athome/augs_ay/workspace/HDF5_CPP/Debug/../openfile.cpp:18: undefined reference to `H5::FileCreatPropList::DEFAULT'
/athome/augs_ay/workspace/HDF5_CPP/Debug/../openfile.cpp:18: undefined reference to `H5::H5File::H5File(std::string const&, unsigned int, H5::FileCreatPropList const&, H5::FileAccPropList const&)'
/athome/augs_ay/workspace/HDF5_CPP/Debug/../openfile.cpp:18: undefined reference to `H5::H5File::~H5File()'
collect2: error: ld returned 1 exit status
make: *** [HDF5_CPP] Error 1

任何人都可以帮忙吗? 谢谢!

2 个答案:

答案 0 :(得分:6)

对于那些使用CMake的人来说,这是一个例子:

(未定义的引用问题在最后一行解决)

find_package(HDF5 COMPONENTS C CXX HL REQUIRED)
link_directories( ${HDF5_LIBRARY_DIRS} )
include_directories( ${HDF5_INCLUDE_DIRS} )
add_executable( convert_to_hdf5 src/convert_to_hdf5.cpp )
target_link_libraries( convert_to_hdf5 ${HDF5_CXX_LIBRARIES} )

答案 1 :(得分:1)

我只是想给将来到达这个地方的所有人留一张纸条,为同样的问题苦苦挣扎:

如果您选择使用带有标记的g++来编译代码而不是hdf5提供的h5c++脚本,请确保您使用的标记来自h5c++ -show而不是h5cc -show Item | Country | Var1 1 | US | 14 2 | UK | 12 3 | France | 11 . . . . 180 | Russia | 0 的后者,因为后者是直接的C版本。