в моем текущем проекте Я работаю с интерфейсом arpackpp. Вся библиотека написана в файлах .h
, поэтому нет необходимости компилировать библиотеку. Проблема я столкнулся сейчас - когда я включаю некоторые файлы заголовков в arpackpp
в некоторых из моих файлов, которые не являются main.cpp
, я получаю следующие ошибки:"multiple definition of ..." using arpackpp
/.../Files/Includes/ ../../../arpack++/include/arerror.h:163: множественное определение
ArpackError::Set(ArpackError::ErrorCode, std::string const&)' /.../Files/Includes/../../../arpack++/include/arerror.h:163: first defined here /tmp/ccruWhMn.o: In function
std :: iterator_traits :: iterator_category std :: __ iterator_category (char * const &) ': /.../Files/ включает в себя /../../../ arpack ++/включать/arerror.h: 163: несколько определениеArpackError::code' /.../Files/Includes/../../../arpack++/include/arerror.h:163: first defined here /tmp/ccruWhMn.o: In function
станд :: вектор> :: max_size() сопз ':
для нескольких arpackpp
функции при связывании всех файлов .o
. Поскольку я читал в нескольких потоках, проблема в том, что я фактически включаю в себя создание функций, которые обычно следует избегать. Поскольку я не хочу менять всю библиотеку, я включил все классы и функции, используя классы arpackpp
в main.cpp
, что становится довольно грязным. Существует ли обходное решение этой проблемы? И почему не включает охранников (#ifndef...#endif)
предотвратить эту проблему?
Возможно, вы могли бы уточнить свои ошибки ... «множественные определения ...» могли бы означать несколько вещей? Вы можете сделать это, отредактировав свой вопрос. – silvergasp