8

Ich versuche, mein Programm zu kompilieren, aber es würde überhaupt nicht verknüpfen. Ich habe den Pfad zu den Boost-Lib-Dateien angegeben und der Linker beschweren sich immer noch. Hier ist die Verknüpfung Fehler Ich habe:Versucht, Boost 1.52-Thread zu verknüpfen

1>Edproj.obj : error LNK2001: unresolved external symbol "class boost::system::error_category const & __cdecl boost::system::system_category(void)" ([email protected]@[email protected]@[email protected]@XZ) 
1>Edproj.obj : error LNK2001: unresolved external symbol "class boost::system::error_category const & __cdecl boost::system::generic_category(void)" ([email protected]@[email protected]@[email protected]@XZ) 
1>Edproj.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall boost::detail::thread_data_base::~thread_data_base(void)" ([email protected]@[email protected]@[email protected]) 
1>Edproj.obj : error LNK2001: unresolved external symbol "void __cdecl boost::throw_exception(class std::exception const &)" ([email protected]@@[email protected]@@@Z) 
1>Edproj.obj : error LNK2001: unresolved external symbol "public: void __thiscall boost::thread::detach(void)" ([email protected]@[email protected]@QAEXXZ) 
1>Edproj.obj : error LNK2001: unresolved external symbol "public: void __thiscall boost::thread::join(void)" ([email protected]@[email protected]@QAEXXZ) 
1>Edproj.obj : error LNK2001: unresolved external symbol "private: void __thiscall boost::thread::start_thread(void)" ([email protected]@[email protected]@AAEXXZ) 
1>Edproj.obj : error LNK2001: unresolved external symbol "bool __cdecl boost::this_thread::interruptible_wait(void *,struct boost::detail::timeout)" ([email protected][email protected]@@[email protected]@[email protected]@Z) 

BOOST_LIB_DIAGNOSTIC kehrt

1> Linking to lib file: libboost_thread-vc100-mt-s-1_52.lib 
1> Linking to lib file: libboost_date_time-vc100-mt-s-1_52.lib 
1> Linking to lib file: libboost_system-vc100-mt-s-1_52.lib 
1> Linking to lib file: libboost_chrono-vc100-mt-s-1_52.lib 

Weitere Informationen:

Ich bin mit einem 64-Bit-Windows 8 Pro und ich zusammengestellt Schub mit der folgenden Option

bjam --build-type=complete --toolset=msvc10.0 address-model=64 architecture=x86 variant=debug,release threading=multi link=static runtime-link=static 

Kann mir jemand sagen, was los ist?

Update:

Nach dem Wechsel 1,51 zu steigern es 7 von 8 dieser Linker Fehler losgeworden, aber dieses noch persistent

error LNK2001: unresolved external symbol "void __cdecl boost::throw_exception(class std::exception const &)" ([email protected]@@[email protected]@@@Z) 

ich nicht bekommen, was hier vor sich geht. Dieser ist von boostpro 32-Bit-Installer. Es könnte nicht etwas mit meiner Quelldatei zu tun haben, oder?

Update:

Ok ich dieses Problem für boost 1.51 gelöst haben. Stellt sich heraus in den Eigenschaftenseiten >> C/C++ >> Codegenerierung >> C++ Ausnahmen aktivieren war für mich ausgeschaltet.

OK. Ich werde versuchen zu sehen, ob die gleichen Einstellungen das Problem für Boost 1.52 lösen. Wird später aktualisiert.

+0

Können Sie nicht viel helfen, aber ich habe prebuilts von Boost-Pro wurden verwendet, ist es eine vorkompilierte Boost-Paket mit mit Installer –

+0

Ja, ich versuche, den 1_51-Build jetzt über Boost-Pro zu bekommen, um zu sehen, ob ich es zum Laufen bringen kann. –

+2

Guter Haken beim Aktivieren von Ausnahmen. In meinem Fall hat es funktioniert. –

Antwort

0

Achten Sie darauf, den Linker-Eigenschaften die richtigen Verzeichnisse hinzuzufügen.

diesen Beitrag weitere Details lesen Boost linker error: Unresolved external symbol "class boost::system::error_category const & __cdecl boost::system::get_system_category(void)"

Auch haben Sie diesen Weg in Linkers zusätzlich Verzeichnisse hinzufügen bekam:

$ (BOOST_ROOT) \ bin.v2 \ Libs \ Thread \ build \ msvc -xx.0 \ release \ address-model-64 \ link statisch \ Threading-Multi

xx ist Visual Studio-Version

+0

Hallo, ich bin über den Beitrag gestolpert, bevor ich meine Frage gestellt habe. Habe das Zeug dort gesagt aber immer noch kein Glück. –

+0

Können Sie hier Ihre Linker-Zusatzverzeichnisse posten? –

+0

$ (BOOST) stage \ lib \; $ (LibraryPath) BOOST ist C: \ Dev \ boost_1_52_0 \ –

0

Viele scheinen mir, wie es kein auto richtig zu verknüpfen.

Include path is boost152/ only 
Library path is boost152/stage/lib 
+0

Hmm ... Ich ging und machte einen Gegencheck. Ich habe meine Umgebungsvariablen als solche eingestellt: '$ (BOOST) =% DEV% \ boost_1_52_0 \' wo '% DEV% C: \ Dev \' und in dem VC++ Verzeichnis unter Eigenschaft I hatte folgendes: 'Include: $ (BOOST)' 'Bibliothek: $ (BOOST) Bühne \ lib \' –

0

Diese beiden definiert unten wurden Messing mit meinem Linker auf, warf einen schönen „LNK2001: extern Symbol“ Fehler. Hast du dann irgendwo in deinem Code?

//#define BOOST_FILESYSTEM_NO_DEPRECATED 
//#define BOOST_FILESYSTEM_NO_LIB 
1

hatte ich das gleiche Problem vor: I boost lib mit Standard-Parameter bauen, die bootstrap.bat laufen direkt.

Wenn Sie in Ihrem Projekt boost :: system verwenden, sollten Sie x86 oder x64 Version von boost :: system lib verwenden und ernennen.

Sie können Boost-Lib mit diesem Schläger neu kompilieren, speichern Sie diese, um Stammordner zu erhöhen und in CMD-Fenstern auszuführen (nicht doppelklicken!):

call "%VS140COMNTOOLS%..\..\VC\vcvarsall.bat" x86 

cd boost_1_60_0 
call bootstrap.bat 

rem Most libraries can be static libs 
b2 -j8 toolset=msvc-14.0 address-model=64 architecture=x86 link=static threading=multi runtime-link=shared --build-type=minimal stage --stagedir=stage/x64 
b2 -j8 toolset=msvc-14.0 address-model=32 architecture=x86 link=static threading=multi runtime-link=shared --build-type=minimal stage --stagedir=stage/win32 

pause 

, um weitere Informationen Sie diesen Artikel sehen: https://studiofreya.com/2015/12/19/how-to-build-boost-1-60-with-visual-studio-2015/

Verwandte Themen