Подтвердить что ты не робот

Фатальная ошибка LNK1104: невозможно открыть файл 'libboost_system-vc110-mt-gd-1_51.lib'

Похоже, я не могу заставить это работать. Я сделал простое консольное приложение (которое зависит от библиотеки websocket++), которым нужны библиотеки Boost. Но когда я пытаюсь скомпилировать, я получаю:

фатальная ошибка LNK1104: невозможно открыть файл 'libboost_system-vc110-mt-gd-1_51.lib'

Однако я сделал bjam, который создал lib в (boost_root)/stage/libs, и я связал путь к libs с компилятором C++/Additionnals includes.

Если я смотрю в (boost_root)/stage/libs, файл libboost_system-vc110-mt-gd-1_51.lib не существует. Вместо этого он называется libboost_system-vc110-mt-sgd-1_51.lib.

Любая идея?

4b9b3361

Ответ 1

Параметр С++ → General → Additional Include Directories предназначен для перечисления каталогов, в которых компилятор будет искать файлы заголовков.

Вам нужно сообщить компоновщику, где искать библиотеки для ссылки. Чтобы получить доступ к этому параметру, щелкните правой кнопкой мыши имя проекта в окне "Обозреватель решений", затем "Свойства" → "Линкера" → "Общие" → "Дополнительные каталоги библиотек". Введите <boost_path>\stage\lib здесь (это путь, где библиотеки находятся, если вы build Boost, используя параметры по умолчанию).

Ответ 2

Это самый простой способ для такого любителя, как я, который сам изучает C++:

Сначала распакуйте библиотеку boost в любой каталог по вашему выбору. Я рекомендую c:\directory.

  • Откройте визуальный С++.
  • Создайте новый проект.
  • Щелкните правой кнопкой мыши проект.
  • Нажмите на свойство.
  • Нажмите C/С++.
  • Нажмите на общий.
  • Выберите дополнительную библиотеку.
  • Включить назначение библиотеки. например 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.

И тебе хорошо идти!

Ответ 3

У меня была та же проблема. Это было вызвано тем, что я скомпилировал Boost с Visual С++ 2010 (v100), и я попытался использовать библиотеку с Visual Studio 2012 (v110) по ошибке.

Итак, я изменил конфигурации (в Visual Studio 2012), перейдя в свойства Project → General → Plataform Toolset и изменив значение из Visual Studio 2012 (v110) на Visual Studio 2010 (v100).

Ответ 4

Еще одно решение:

Я был в тупик, потому что я включил 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 (.dlls), но не имел определяемого макроса BOOST_ALL_DYN_LINK. По-видимому, в компиляции есть подсказки для включения библиотеки, и без BOOST_ALL_DYN_LINK он ищет статическую библиотеку (с префиксом lib), а не динамическую библиотеку (без префикса lib).

Ответ 5

У меня была такая же проблема, и я ошибся в том, что я установил двоичный файл boost_1_55_0-msvc-11.0-32.exe для использования с visual С++ 2010, который имеет версию v100 (свойства проекта → ConfiguratioProperties- > General- > platformTooset ) не v110 как visual С++ 2012. Поэтому я загрузил boost_1_55_0-msvc-10.0-32.exe, и теперь все в порядке.

Ответ 6

Если у вас возникли проблемы с форсированием или предпочитают не делать этого, альтернативой является загрузка файлов lib из SourceForge. Ссылка приведет вас к папке zipped lib и dll файлов для версии 1.51. Но вы должны иметь возможность редактировать ссылку, чтобы указать версию выбора. По-видимому, у установщика BoostPro есть некоторые проблемы.

Ответ 7

У меня была аналогичная проблема при попытке использовать тестирование boost unit в Visual Studio 2015 (Community Edition):

фатальная ошибка LNK1104: libboost_unit_test_framework-vc140-mt-1_57

поэтому я решил поделиться своим решением.

Вы можете создать проект тестирования модуля повышения мощности двумя способами (и это решение работает для обоих):

Вот шаги, которые я выполнил, чтобы оба проекта работали:

Сначала загрузите желаемую версию boost (например, boost_1_57_0). Вы можете либо загрузить boost с помощью правильных двоичных файлов (скомпилированных с использованием msvc v140), либо сами извлечь из них двоичные файлы, выполнив следующие команды из командной строки:

  • bootstrap.bat
  • "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86
  • bjam --clean
  • bjam -j4 --debug-symbols = on --build-type = complete toolset = msvc-14.0 threading = multi runtime-link = shared адрес-модель = 32

Где msvc-14.0 указывает, что нам нужна версия Visual Studio 2015 (VS 2015 = v14.0 = v140), а address-model = 32 указывает, что мы требуется платформа 32 (но то же самое можно сделать для 64 бит).

Как только у вас есть двоичные файлы, перейдите в Visual Studio, выберите проект Boost Unit Testing, который вы создали. Перейдите в Свойства проектa > Конфигурация (из главного меню) и сделайте следующие варианты:

  • Установите " Общие > Набор инструментов для платформы" в Visual Studio 2015 (v140).

  • Включите путь к папке boost (например, C:\boost_1_57_0) и путь к подпапке, содержащей двоичные файлы (например, C:\boost_1_57_0\stage\lib) в:

    • " C\С++ > Дополнительный каталог Include"
    • и компоновщик > Дополнительные каталоги библиотек ".

Ответ 8

У меня была такая же проблема. Я решил проблему перемещения mainTest.cpp из подпапки src/mainTest/в главную папку src/ Думаю, это была твоя проблема.

Ответ 9

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>

Ответ 10

b2 -j% cores% toolset =% msvcver% address-model = 64 архитектура = ссылка x86 = статическая многопоточность = multi-runtime-link = общая - тип сборки = минимальный этап --stagedir = этап /x64

Свойства → Линкер → Общие → Дополнительные каталоги библиотек $ (BOOST)\stage ** x64 **\lib