2015-12-02 84 views
2

我正在嘗試使用hdf5格式來存儲數據。問題是,我無法與圖書館聯繫。我有以下代碼未找到符號 - 鏈接到hdf庫

#include <H5Cpp.h> 
int main(void){ 
    H5::H5File file("test_MatrixRoundTrip_Double.h5", H5F_ACC_TRUNC); 
} 

,並使用

gcc -std=c++11 -o main main.cpp -I /usr/local/include/ -L /usr/local/lib/ -lhdf5 -lhdf5_hl 

這總是返回錯誤

Undefined symbols for architecture x86_64: 
    "H5::FileAccPropList::DEFAULT", referenced from: 
    _main in main-c207d1.o 
    "H5::FileCreatPropList::DEFAULT", referenced from: 
    _main in main-c207d1.o 
    "H5::H5File::H5File(char const*, unsigned int, H5::FileCreatPropList const&, H5::FileAccPropList const&)", referenced from: 
    _main in main-c207d1.o 
    "H5::H5File::~H5File()", referenced from: 
    _main in main-c207d1.o 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

我安裝使用

brew install homebrew/science/hdf5 

在OSX的HDF5庫編譯我在做什麼這裏錯了嗎?

+0

你爲什麼用gcc編譯?你有嘗試過使用g ++嗎? – sestus

+0

g ++產生相同的錯誤。我用下面的命令'g ++ -std = C++ 11 -o main main.cpp -I/usr/local/include/-L/usr/local/lib/-lhdf5 -lhdf5_hl' – physicsGuy

回答

2

您將包含HDF5 C++頭文件,但只能鏈接HDF5 C庫。添加行:-lhdf5_cpp來鏈接C++共享對象並使用locate libhdf5_cpp來查找它的libpath。

+0

我正面臨同樣的問題。你能否更詳細地解釋這個:)? fyi:我的hdf文件位於'/ usr/local/lib'位置。 –

+1

@VivekBagaria:我建議不要使用C++綁定到HDF5,只使用C綁定。 C++綁定不能很好地維護。 – user14717