2014-10-27 16 views
5

Ich versuche, zu mehreren Boost-Bibliotheken (die, die kompiliert werden müssen) in Visual Studio 2013 zu verknüpfen und habe Probleme damit.Verknüpfung zu Boost mit Visual Studio 2013

ich die Boost-Dateien installiert haben, indem Sie von der Kommandozeile runing

boostrap.bat 

und

b2 --toolset=msvc-12.0 --build-type=complete architecture=x86 address-model=64 stage 

, so dass die Bibliotheken in C: \ boost_1_56_0/Bühne/lib

In meinem Projekt gehe ich in die Konfigurationseigenschaften> c/C++> Allgemein> Zusätzliche Include-Verzeichnisse und schließe C: \ boost_1_56_0 ein und verwende Header wie zum Beispiel #include<boost/serialization/vector.hpp> unter anderem

ich dann auf die Konfigurationseigenschaften gehen> Linker> zusätzliche Bibliothek Abhängigkeiten und umfassen C: \ boost_1_56_0 \ Stufe \ lib

ich jetzt weiß, dass Boost-Auto verwendet die Verknüpfung so stelle ich sicher, dass es keine Versuche sind Link zu den Boost-Bibliotheken in Konfigurationseigenschaften> Linker> input> zusätzliche Abhängigkeiten zu lenken

aber ich immer noch (viele) Linker Fehler des folgenden Typs:

error LNK2001: unresolved external symbol "public: void __thiscall boost::archive::detail::basic_oarchive::end_preamble(void)" ([email protected][email protected]@[email protected]@@QAEXXZ) 

All r elevant Fragen Ich finde Bedenken Missverständnisse der Auto-Linking-Funktion von Boost, aber ich mache jetzt explizit, was ich tun sollte (nach meinem besten Wissen). Es ist das Finden der Header-Dateien ok und die Bibliotheksdateien sind, wo ich bin der Linker, um nach ihnen zu suchen.

Was könnte ich falsch machen?

+0

Haben Sie versucht, den Vorverarbeitungsvorgang für eine Dateioption auszuführen und die .i-Datei zu untersuchen, um zu sehen, was generiert wird? – BlueTrin

Antwort

0

Es gibt Tonnen von Artikeln für die Verknüpfung im visuellen Studio im Stapelüberlauf zu verknüpfen. Einer von ihnen, die ich finde minimal/vollständig ist How to use Boost in Visual Studio 2010

+0

Ich habe das im Prinzip explizit befolgt und bekomme immer noch die Verknüpfungsfehler – user3353819

0

Ich laufe gerade auf ähnliche Frage und teile meine Idee mit dir. Wahrscheinlich kompilieren Sie sowohl 32bit als auch 64bit libs für Boost. Ich vermute, dass Sie vielleicht zwei Verzeichnisse haben, die die gleichen Namen enthalten, aber in verschiedenen Plattformen wie $ (BOOST154_NEW_HOME) \ lib_x64 und $ (BOOST154_NEW_HOME) \ lib_x86 enthalten sind. Sie sollten beide Pfade in Ihre Konfigurationseigenschaften> linker> zusätzliche Bibliotheksabhängigkeiten eingefügt haben. Boost verwendet zwar auto_link, um herauszufinden, welche lib Sie verwenden möchten, aber es ist immer noch unklar, welche lib unter 32 bit oder 64 bit importiert werden muss.

Mein Vorschlag ist, dass Sie nur 64bit boost libs Verzeichnis in Ihren Konfigurationseigenschaften> Linker> zusätzliche Bibliothek Abhängigkeiten enthalten sollten.

+0

Können wir ein komplettes Verzeichnis hinzufügen? Ich dachte, wir sollten einfach .lib-Dateien hinzufügen – Sashank