我已经开始学习HDF5并且无法通过HDF5 C ++的以下问题。
(背景信息:我已经在OSX El Capitan上通过Homebrew安装了hdf5。我已经使用通用C API和Python模块h5py成功完成了一些程序,但C ++ API无效。)
以下是我的命令示例:
h5c++ simple.cpp
我尝试编译但收到以下错误:
Undefined symbols for architecture x86_64:
"H5::H5File::H5File(...)" ...
"H5::CommonFG::createDataSet(...)" ...
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
其他信息:
我包括H5Cpp.h。我认为这是我需要包含的唯一文件。
起初,我认为默认情况下可能没有启用C ++,尽管我在the Homebrew formula中读到了。作为复核,我使用--with-cxx
卸载并重新安装(显然,这不起作用)。
这些错误真的告诉我什么?为什么我的C ++ HDF5程序不起作用?有什么技巧我应该知道吗?
答案 0 :(得分:1)
我在与一些朋友合作并使用h5c ++的详细输出时发现了这个问题:
h5c++ -v simple.cpp
我安装了配备HDF5的anaconda平台。我不确定该错误是否是anaconda HDF5和Homebrew HDF5之间发生冲突的结果,但使用Homebrew HDF5可执行文件解决了这个问题。
我实际做的是卸载anaconda。
(或者,我可以修复我的PATH bash变量,不包括anaconda工具。在~/.bash_profile
中,anaconda平台安装添加了一行更新PATH以包含其工具。注释掉行并重新启动bash,或者手动修改PATH可以阻止HDF5版本之间的冲突。)