HDF5 C++的链接器问题

Linker problems with HDF5 C++

本文关键字:问题 链接 C++ HDF5      更新时间:2023-10-16

我已经开始学习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++,尽管我在自制公式中读到了什么。作为双重检查,我卸载并重新安装了--with-cxx(显然,这不起作用)。

这些错误到底告诉我什么?为什么我的 C++ HDF5 程序不起作用?有什么技巧我应该知道吗?

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

h5c++ -v simple.cpp

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

我实际上做的是卸载蟒蛇。

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