链接器与HDF5 C ++的问题

时间:2016-06-22 18:52:38

标签: c++ macos homebrew hdf5

我已经开始学习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程序不起作用?有什么技巧我应该知道吗?

1 个答案:

答案 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版本之间的冲突。)