2014-03-26 3 views
3

Я попытался написать очень короткий скрипт, чтобы открыть файл hdf5, но он не работает.HDF5 - C++ - открыть файл, чтобы прочитать содержимое не удалось

#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 

может кто-нибудь помочь? Спасибо!

+4

Вам нужно добавить '-lhdf5_cpp -lhdf5' в свою команду сборки. –

+0

Я использую eclipse для строительства. Как я могу это сделать здесь? – smaica

+1

А я нашел! Свойства - C/C++ Build - Настройки - Библиотеки компоновщиков Спасибо! Это сработало – smaica

ответ

4

Для тех, кто использует 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}) 
0

Я просто хотел, чтобы оставить записку всем остальным, кто достигает это место в будущем, борясь с той же проблемой:

Если вы выбираете использовать g++ с флагами, чтобы скомпилировать код вместо hdf5 предоставленного h5c++ скрипта, убедитесь, что флаги вы используете, из h5c++ -show вместо h5cc -show, так как последняя предназначена для прямой версии C.

Смежные вопросы