【问题标题】:Linker problems with HDF5 C++HDF5 C++ 的链接器问题
【发布时间】:2016-10-24 20:57:00
【问题描述】:

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

【问题讨论】:

  • 这些是链接器错误——您提供了哪些链接器(或编译器)选项?
  • @Soren 更新了问题。我已经尝试了各种方法,但只是最基本的 h5c++ 命令给出了相同的错误。

标签: c++ macos homebrew hdf5


【解决方案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 版本之间的冲突。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多