HDF5 C++ 的链接器问题

Linker problems with HDF5 C++

我已经开始学习 HDF5,但无法通过 HDF5 C++ 的以下问题。

(背景信息:我已经通过 Homebrew 在 OSX El Capitan 上安装了 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 程序不工作?有什么我应该知道的技巧吗?

我在与一些朋友合作并使用 h5c++ 的详细输出时发现了这个问题:

    h5c++ -v simple.cpp

我已经安装了HDF5自带的anaconda平台。我不确定错误是否是 anaconda HDF5 和 Homebrew HDF5 之间冲突的结果,但使用 Homebrew HDF5 可执行文件可以解决问题。

我实际上做的是卸载 anaconda。

(或者,我可以修复我的 PATH bash 变量以不包含 anaconda 工具。在 ~/.bash_profile 中,anaconda 平台安装添加了一行更新 PATH 以包含其工具。注释掉该行并重新启动 bash,或手动修改 PATH 停止了 HDF5 版本之间的冲突。)