In meinem aktuellen Projekt arbeite ich mit der Arpackpp-Schnittstelle. Die gesamte Bibliothek ist in .h
Dateien geschrieben, so dass die Bibliothek nicht kompiliert werden muss. Das Problem, das ich mit Blick auf bin jetzt - wenn ich einige der arpackpp
Header-Dateien in einigen meiner Dateien enthalten, die nicht die main.cpp
sind, bekomme ich folgende Fehler:"multiple definition of ..." mit arpackpp
/.../Files/Includes/ ../../../arpack++/include/arerror.h:163: Mehrfachdefinition von
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_kategorie (char * const &) ': /.../Files/ Inklusive /../../../ arpack ++/include/arerror.h: 163: mehrere Definition vonArpackError::code' /.../Files/Includes/../../../arpack++/include/arerror.h:163: first defined here /tmp/ccruWhMn.o: In function
std :: vector> :: max_size() const ':
für mehr arpackpp
Funktionen beim Verknüpfen aller .o
Dateien. Wie ich in mehreren Threads gelesen habe, ist das Problem, dass ich eigentlich die Instanziierung der Funktionen einbeziehe, was normalerweise vermieden werden sollte. Da ich nicht die gesamte Bibliothek ändern möchte, habe ich alle Klassen und Funktionen mit arpackpp
Klassen in main.cpp
, die ziemlich unordentlich wird. Gibt es eine Problemumgehung für dieses Problem? Und warum nicht Wächter (#ifndef...#endif)
dieses Problem verhindern?
Könnten Sie vielleicht Ihre Fehler genauer ausführen ... "mehrere Definitionen von ..." könnte eine Reihe von Dingen bedeuten? Sie können dies tun, indem Sie Ihre Frage bearbeiten. – silvergasp