Wygląda na to, że nie mogę tego uruchomić. Zrobiłem prostą aplikację konsolową (zależną od websocket++
biblioteki), która potrzebuje Boost
bibliotek ... ale kiedy próbuję skompilować, otrzymuję:
błąd krytyczny LNK1104: nie można otworzyć pliku „libboost_system-vc110-mt-gd-1_51.lib”
Jednak zrobiłem bjam, który utworzył bibliotekę w (boost_root)/stage/libs
i połączyłem ścieżkę do bibliotek z kompilatorem C++/Additionnals includes
.
Jeśli zajrzę (boost_root)/stage/libs
do akt, libboost_system-vc110-mt-gd-1_51.lib
nie ma. Nazywa się libboost_system-vc110-mt-sgd-1_51.lib
zamiast tego.
Dowolny pomysł?
VS2012 developer command prompt
, przejdź do katalogu głównego boost i wpiszbootstrap
, a następnie wpisz,b2
a powinieneś otrzymać pełny zestaw plików bibliotecznych./MD
?Odpowiedzi:
Parametr C ++ → General → Additional Include Directories służy do wyświetlania listy katalogów, w których kompilator będzie szukał plików nagłówkowych.
Musisz powiedzieć konsolidatorowi, gdzie ma szukać bibliotek, do których ma linkować. Aby uzyskać dostęp do tego ustawienia, kliknij prawym przyciskiem myszy nazwę projektu w oknie Eksplorator rozwiązań , a następnie Właściwości → Konsolidator → Ogólne → Dodatkowe katalogi biblioteczne . Wpisz
<boost_path>\stage\lib
tutaj (jest to ścieżka, w której znajdują się biblioteki, jeśli budujesz Boost przy użyciu domyślnych opcji).źródło
To najprostszy sposób dla amatora takiego jak ja, który samodzielnie uczy się C ++:
Najpierw rozpakuj bibliotekę boost do dowolnego wybranego katalogu. Polecam
c:\directory
.c:\boost_1_57_0
.Następnie przejdź do biblioteki linków, w której wystąpiły problemy.
c:\boost_1_57_0
.booststrap.bat
(nie zawracaj sobie głowy wpisywaniem w oknie poleceń, po prostu poczekaj i nie zamykaj okna, czyli miejsca, w którym miałem problem, którego rozwiązanie zajęło mi dwa tygodnie. Po chwilibooststrap
uruchomi się i utworzy ten sam plik, ale teraz z dwiema różnymi nazwami:b2
ibjam
.b2
i poczekaj na uruchomienie.bjam
i poczekaj na uruchomienie. Następnie zostanie utworzony folder o nazwiestage
.c:\boost_1_57_0\stage\lib
.I jesteś gotowy!
źródło
bootstrap.bat
(zajęło to 10-20 sekund); d) wpisz./b2
zgodnie z instrukcją (wypełnienie zajęło 30-40 minut).Miałem ten sam problem. Jest to spowodowane tym, że skompilowałem Boost w Visual C ++ 2010 (v100) i przez pomyłkę próbowałem użyć tej biblioteki z Visual Studio 2012 (v110).
Więc zmieniłem konfiguracje (w Visual Studio 2012) przechodząc do Właściwości projektu -> Ogólne -> Zestaw narzędzi Plataform i zmieniłem wartość z Visual Studio 2012 (v110) na Visual Studio 2010 (v100) .
źródło
Jeszcze inne rozwiązanie:
Zaskoczyło mnie to, ponieważ włączyłem boost_regex-vc120-mt-gd-1_58.lib do mojej właściwości Link-> Additional Dependencies, ale link ciągle mówił mi, że nie może otworzyć libboost_regex-vc120-mt-gd-1_58.lib ( zwróć uwagę na przedrostek lib). Nie podałem libboost_regex-vc120-mt-gd-1_58.lib.
Próbowałem użyć (i zbudowałem) dynamiczne biblioteki boost (.dlls), ale nie miałem zdefiniowanego makra BOOST_ALL_DYN_LINK. Najwyraźniej w kompilacji znajdują się wskazówki dotyczące włączenia biblioteki, a bez BOOST_ALL_DYN_LINK szuka biblioteki statycznej (z prefiksem lib), a nie biblioteki dynamicznej (bez prefiksu lib).
źródło
Miałem ten sam problem i moim błędem było to, że zainstalowałem binarny boost_1_55_0-msvc-11.0-32.exe do użycia z Visual C ++ 2010, który ma wersję v100 (właściwości projektu-> ConfiguratioProperties-> General-> platformTooset) a nie v110 jako wizualne c ++ 2012. Więc pobrałem boost_1_55_0-msvc-10.0-32.exe i na razie wszystko jest w porządku.
źródło
Jeśli masz problemy z budowaniem przyspieszenia lub wolisz tego nie robić, alternatywą jest pobranie plików lib z SourceForge . Odsyłacz przeniesie Cię do folderu ze spakowanymi plikami lib i dll dla wersji 1.51. Powinieneś jednak móc edytować łącze, aby określić wybraną wersję. Najwyraźniej instalator BoostPro ma pewne problemy.
źródło
Miałem podobny problem podczas próby użycia testów jednostkowych przyspieszenia w programie Visual Studio 2015 (Community Edition):
więc pomyślałem, że podzielę się moim rozwiązaniem.
Projekt przyspieszenia testów jednostkowych można utworzyć na dwa sposoby (i to rozwiązanie działa w obu przypadkach):
Oto kroki, które wykonałem, aby oba projekty działały:
Najpierw pobierz żądaną wersję doładowania (na przykład boost_1_57_0 ). Możesz pobrać boost z poprawnymi plikami binarnymi (skompilowanymi za pomocą msvc v140) lub samodzielnie rozpakować pliki binarne, uruchamiając następujące polecenia z wiersza poleceń:
Gdzie msvc-14.0 określa, że wymagamy wersji Visual Studio 2015 (VS 2015 = v14.0 = v140), a address-model = 32 określa, że wymagamy platformy 32 (ale to samo można zrobić dla wersji 64-bitowej).
Gdy masz już pliki binarne, przejdź do programu Visual Studio, wybierz utworzony projekt Boost Unit Testing. Przejdź do Właściwości projektu> konfiguracja (z menu głównego) i dokonaj następujących wyborów:
Ustaw „ Ogólne> Zestaw narzędzi platformy ” na Visual Studio 2015 (v140).
Dołącz ścieżkę do folderu boost (np. C: \ boost_1_57_0) i ścieżkę do podfolderu zawierającego pliki binarne (np. C: \ boost_1_57_0 \ stage \ lib) w:
źródło
b2 -j% rdzeni% zestaw narzędzi =% msvcver% model-adresu = 64 architektura = łącze x86 = wątki statyczne = wiele łączy uruchomieniowych = współdzielone --build-type = minimalny etap --stagedir = stage / x64
Właściwości → Konsolidator → Ogólne → Dodatkowe katalogi biblioteczne $ (BOOST) \ stage \ x64 \ lib
źródło
Zgłoszono mi ten sam problem. Rozwiązałem problem przenosząc plik mainTest.cpp z podfolderu src / mainTest / do głównego folderu src / Myślę, że to też był twój problem.
źródło
2>LINK : fatal error LNK1104: cannot open file 'libboost_regex-vc120-mt-sgd-1_55.lib
W moim przypadku bootstrap / bjam nie był dostępny (biblioteki były prekompilowane i zatwierdzane do SCM) w starym odziedziczonym projekcie. Biblioteki nie miały wersji VC ani BOOST w swoich nazwach plików, np .:
libboost_regex-mt-sgd.lib
, jednakProcessed /DEFAULTLIB:libboost_regex-vc120-mt-sgd-1_55.lib
zostało w jakiś sposób uruchomione automatycznie.Naprawiono przez ręczne dodanie niewersjonowanej nazwy pliku do:
<AdditionalDependencies>$(DK_BOOST)\lib64\libboost_regex-mt-sgd.lib</AdditionalDependencies>
i czarnych list z
...vc120-mt-sgd-1_55.lib
in<IgnoreSpecificDefaultLibraries>libboost_regex-vc120-mt-sgd-1_55.lib</IgnoreSpecificDefaultLibraries>
źródło