Проблемы компоновщика с HDF5 C++

Я начал изучать HDF5 и не могу решить следующую проблему с HDF5 C++.

(Справочная информация: я установил hdf5 через Homebrew на OSX El Capitan. Мне удалось запустить несколько программ, использующих общий 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 не работает? Есть ли какие-то хитрости, о которых я должен знать?


person Joe    schedule 22.06.2016    source источник
comment
Это ошибки компоновщика - какие параметры компоновщика (или компилятора) вы указали?   -  person Soren    schedule 22.06.2016
comment
@Soren обновил вопрос. Я пробовал все, что угодно, но только самая простая команда h5c++ дает ту же ошибку.   -  person Joe    schedule 22.06.2016


Ответы (1)


Я обнаружил проблему при сотрудничестве с некоторыми друзьями и использовании подробного вывода из h5c++:

    h5c++ -v simple.cpp

Я установил платформу anaconda, которая поставляется с HDF5. Я не уверен, является ли ошибка результатом конфликта между anaconda HDF5 и Homebrew HDF5, но использование исполняемого файла Homebrew HDF5 устраняет проблему.

На самом деле я удалил anaconda.

(В качестве альтернативы я мог бы просто исправить мою переменную PATH bash, чтобы она не включала инструменты anaconda. В ~/.bash_profile установка платформы anaconda добавила строку, которая обновляет PATH, чтобы включить ее инструменты. Комментирование строки и перезапуск bash или изменение PATH вручную остановило конфликт между версиями HDF5.)

person Joe    schedule 01.07.2016