Кажется, я не могу заставить это работать. Я сделал простое консольное приложение (которое зависит от websocket++
библиотеки), которому нужны Boost
библиотеки ... но когда я пытаюсь скомпилировать, я получаю:
фатальная ошибка LNK1104: невозможно открыть файл libboost_system-vc110-mt-gd-1_51.lib
Однако я сделал bjam, который создал библиотеку, (boost_root)/stage/libs
и связал путь к библиотекам с компилятором C++/Additionnals includes
.
Если я посмотрю в (boost_root)/stage/libs
файл, то libboost_system-vc110-mt-gd-1_51.lib
его нет. Он называется libboost_system-vc110-mt-sgd-1_51.lib
вместо этого.
Любая идея?
VS2012 developer command prompt
, перейдите в корневой каталог boost и введитеbootstrap
, а затем введите,b2
и вы должны получить полный набор файлов библиотеки./MD
?Ответы:
Параметр C ++ → General → Additional Include Directories предназначен для перечисления каталогов, в которых компилятор будет искать файлы заголовков.
Вам нужно указать компоновщику, где искать библиотеки для ссылки. Чтобы получить доступ к этому параметру, щелкните правой кнопкой мыши имя проекта в окне обозревателя решений , затем выберите Свойства → Компоновщик → Общие → Дополнительные каталоги библиотек . Введите
<boost_path>\stage\lib
сюда (это путь, по которому расположены библиотеки, если вы собираете Boost с параметрами по умолчанию).источник
Это самый простой способ для такого любителя, как я, который самостоятельно изучает C ++:
Сначала разархивируйте библиотеку boost в любой каталог по вашему выбору. Рекомендую
c:\directory
.c:\boost_1_57_0
.Затем перейдите в библиотеку ссылок, если у вас возникли проблемы.
c:\boost_1_57_0
.booststrap.bat
(не пытайтесь вводить текст в командном окне, просто подождите и не закрывайте окно, в котором у меня возникла проблема, решение которой заняло у меня две недели. Через некоторое время программаbooststrap
запустится и создаст тот же файл, но теперь с двумя разными именами:,b2
иbjam
.b2
и подождите, пока он запустится.bjam
и подождите, пока он запустится. Тогда будет производиться папка с именемstage
.c:\boost_1_57_0\stage\lib
.И вам хорошо!
источник
bootstrap.bat
(прошло 10-20 секунд); г) введите./b2
в соответствии с инструкциями (на это ушло 30-40 минут).У меня такая же проблема. Это было вызвано тем, что я скомпилировал Boost с Visual C ++ 2010 (v100) и по ошибке попытался использовать библиотеку с Visual Studio 2012 (v110).
Итак, я изменил конфигурации (в Visual Studio 2012), перейдя в Свойства проекта -> Общие -> Набор инструментов Plataform, и изменил значение с Visual Studio 2012 (v110) на Visual Studio 2010 (v100) .
источник
Еще одно решение:
Я был в тупике, потому что включал boost_regex-vc120-mt-gd-1_58.lib в свое свойство Link-> Additional Dependencies, но ссылка продолжала сообщать мне, что не может открыть libboost_regex-vc120-mt-gd-1_58.lib ( обратите внимание на префикс lib). Я не указал libboost_regex-vc120-mt-gd-1_58.lib.
Я пытался использовать (и построил) динамические библиотеки boost (.dll), но не определил макрос BOOST_ALL_DYN_LINK. Очевидно, в компиляции есть подсказки для включения библиотеки, и без BOOST_ALL_DYN_LINK он ищет статическую библиотеку (с префиксом lib), а не динамическую библиотеку (без префикса lib).
источник
У меня была такая же проблема, и моя ошибка заключалась в том, что я установил двоичный файл boost_1_55_0-msvc-11.0-32.exe для использования с Visual C ++ 2010, который имеет версию v100 (свойства проекта-> ConfiguratioProperties-> General-> platformTooset), а не v110 как visual c ++ 2012. Я загрузил boost_1_55_0-msvc-10.0-32.exe, и теперь все в порядке.
источник
Если у вас возникли проблемы со сборкой Boost или вы предпочитаете этого не делать, альтернативой является загрузка файлов библиотеки из SourceForge . По ссылке вы попадете в папку с заархивированными файлами lib и dll для версии 1.51. Но вы должны иметь возможность редактировать ссылку, чтобы указать версию по выбору. Видимо у установщика от BoostPro есть проблемы.
источник
У меня была аналогичная проблема при попытке использовать ускоренное модульное тестирование в Visual Studio 2015 (Community Edition):
поэтому я подумал, что поделюсь своим решением.
Вы можете создать проект ускоренного модульного тестирования двумя способами (и это решение работает для обоих):
Вот шаги, которые я выполнил, чтобы оба проекта заработали:
Сначала загрузите желаемую версию boost (например, boost_1_57_0 ). Вы можете либо загрузить boost с правильными двоичными файлами (скомпилированными с использованием msvc v140), либо извлечь двоичные файлы самостоятельно, выполнив следующие команды из командной строки:
Где msvc-14.0 указывает, что нам требуется версия Visual Studio 2015 (VS 2015 = v14.0 = v140), а address-model = 32 указывает, что нам требуется платформа 32 (но то же самое можно сделать для 64-разрядной версии).
Когда у вас есть двоичные файлы, перейдите в Visual Studio, выберите созданный вами проект Boost Unit Testing. Перейдите в Свойства проекта> конфигурация (из главного меню) и сделайте следующие варианты:
Установите « Общие> Набор инструментов платформы » на Visual Studio 2015 (v140).
Включите путь к папке boost (например, C: \ boost_1_57_0) и путь к подпапке, содержащей двоичные файлы (например, C: \ boost_1_57_0 \ stage \ lib) в:
источник
b2 -j% cores% toolset =% msvcver% address-model = 64 architecture = x86 link = static threading = multi runtime-link = shared --build-type = minimal stage --stagedir = stage / x64
Свойства → Компоновщик → Общие → Дополнительные каталоги библиотек $ (BOOST) \ stage \ x64 \ lib
источник
У меня здесь была такая же проблема. Я решил проблему, переместив mainTest.cpp из подпапки src / mainTest / в основную папку src /, думаю, это тоже была ваша проблема.
источник
2>LINK : fatal error LNK1104: cannot open file 'libboost_regex-vc120-mt-sgd-1_55.lib
В моем случае bootstrap / bjam был недоступен (библиотеки были предварительно скомпилированы и зафиксированы в SCM) в старом унаследованном проекте. В именах файлов библиотек не было версий VC или BOOST, например:
libboost_regex-mt-sgd.lib
однакоProcessed /DEFAULTLIB:libboost_regex-vc120-mt-sgd-1_55.lib
каким-то образом запускались автоматически.Исправлено путем ручного добавления имени файла без версии в:
<AdditionalDependencies>$(DK_BOOST)\lib64\libboost_regex-mt-sgd.lib</AdditionalDependencies>
и занесен в черный список
...vc120-mt-sgd-1_55.lib
ин<IgnoreSpecificDefaultLibraries>libboost_regex-vc120-mt-sgd-1_55.lib</IgnoreSpecificDefaultLibraries>
источник