Boost-symbol nicht gefunden
Ich versuche zu kompilieren/port eine ältere version von OpenOffice. Es nutzt Boost v1.34.1, die Teil des source-trees. Die Fehlermeldung ist wie folgt:
Undefined symbols:
"boost::throw_exception(std::exception const&)", referenced from:
boost::detail::shared_count::shared_count<ScToken>(ScToken*)in detfunc.o
ld: symbol(s) not found
Boost ist mir neu, und ich habe nicht in der Lage viel zu finden online zu helfen, mich zu verstehen. Aus der Fehlermeldung, ich verstehe, dass ich wahrscheinlich benötigen, um link eine Bibliothek. Allerdings boost::throw_exception
ist definiert in der header-Datei mit keine passende Bibliothek (die ich finden kann). Nur zum Spaß, ich habe versucht #include <boost/throw_exception.hpp>
im detfunc und verwenden Sie symbolische links zu setzen die header-Datei im gleichen Verzeichnis mit kein Glück.
Gibt es eine Bibliothek, die ich sollte die Verknüpfung mit -l
oder eine include-Pfad mit -I
? Wie soll ich das symbol verwiesen wird?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Boost erwartet, dass das Projekt gebaut werden, mit makro
BOOST_NO_EXCEPTIONS
nicht definiert oder definieren Sie die Funktionboost::throw_exception
selbst.Vom
<boost/throw_exception.hpp>
in version 1.34.1:Erhöhung der Konfigurations-Header bestimmen, ob Sie definieren das makro ist oder nicht. Wie es aussieht läuft es auf den compiler Sie verwenden, aber es können auch andere Faktoren. Werfen Sie einen Blick in die
boost/config/compiler/
Ordner für die header-Datei, die entspricht Ihrem compiler, dann suchen SieBOOST_NO_EXCEPTIONS
in es. Es sollte einige Bedingungen rund um die#define
zu erklären, wenn Boost definiert. Sie können konfigurieren Sie Ihren build zu vermeiden, die definition und vorbei an der linker-Fehler, den Sie erlebt haben.Wenn Sie nicht ändern Sie Ihre compiler-config zu vermeiden, die definition, dann sind Sie wahrscheinlich Links definieren
boost::throw_exception(std::exception const & e)
sich irgendwo in der OpenOffice-code. Ich bin nicht vertraut mit diesem code, aber so kann ich nicht geben einen guten Vorschlag, wo es hin soll.throw_exception.hpp
und schon entdeckt genau das, was Sie beantwortet. Ich war nicht bewusstboost/config/compiler/
für die compiler-flags, aber sicher genug,BOOST_NO_EXCEPTIONS
definiert wurde.