Как решить фатальную ошибку LNK1181 при компиляции - PullRequest
0 голосов
/ 06 сентября 2018

Я пытаюсь собрать ORBSLAM2 в Windows с Visual Studio 2015 v14 x64. Эта конкретная ветвь ORBSLAM2 зависит от библиотеки C / C ++ Boost .

До сих пор я выполнил следующие шаги:

A.) Я скачал и собрал библиотеку Boost, как описано здесь :

$ bootstrap.bat
$ b2 link=static runtime-link=static release stage
$ bjam install --toolset=msvc variant=release link=static threading=multi runtime-link=static

B.) Затем я настроил следующие свойства для проекта:

Свойства проекта -> C / C ++ -> Общие -> Дополнительные каталоги включения

D:\ORB_SLAM2\Thirdparty\boost_1_64_0\

Свойства проекта -> Компоновщик -> Ввод-> Дополнительные зависимости

D:\ORB_SLAM2\Thirdparty\boost_1_64_0\stage\lib\

Я получаю следующую ошибку компоновщика при сборке:

1>------ Rebuild All started: Project: ZERO_CHECK, Configuration: Release x64 ------
1>  Checking Build System
1>  CMake does not need to re-run because D:/ORB_SLAM2/build/CMakeFiles/generate.stamp is up-to-date.
2>------ Rebuild All started: Project: ORB_SLAM2, Configuration: Release x64 ------
2>  Building Custom Rule D:/ORB_SLAM2/CMakeLists.txt
2>  CMake does not need to re-run because D:/ORB_SLAM2/build/CMakeFiles/generate.stamp is up-to-date.
2>  System.cc
2>  Tracking.cc
2>  LocalMapping.cc
2>  LoopClosing.cc
2>  ORBextractor.cc
...
...
...
2>  Viewer.cc
2>  Generating Code...
2>  ORB_SLAM2.vcxproj -> D:\ORB_SLAM2\build\Release\ORB_SLAM2.lib
3>------ Rebuild All started: Project: mono_euroc, Configuration: Release x64 ------
3>  mono_euroc.cc
3>LINK : fatal error LNK1181: cannot open input file 'D:\ORB_SLAM2\Thirdparty\boost_1_64_0\stage\lib\.obj'
========== Rebuild All: 2 succeeded, 1 failed, 0 skipped ==========

Странно то, что компоновщик ищет только .obj, имя файла не задействовано. Есть идеи, в чем проблема?

1 Ответ

0 голосов
/ 08 сентября 2018

Я решил проблему, установив библиотеки Boost с NuGet Packet Manager в Visual Studio 2015 IDE.

  1. Решение правой кнопкой мыши -> Manage NuGet Packages for Solution
  2. Просмотрите "boost" и выберите boost-vc140 (Сергей Шандар)
  3. Справа выберите нужную версию и отметьте проекты, которые вы хотите связать Boost с
  4. Нажмите "Установить" -> ОК -> подождите, наберитесь терпения ...
  5. Щелкните правой кнопкой мыши свой проект -> Свойства конфигурации -> C / C ++ -> Общие -> Дополнительные каталоги включения: Добавить "C:\<path-to-your-project>\build\packages\boost.1.64.0.0\lib\native\include"
  6. Щелкните правой кнопкой мыши свой проект -> Свойства конфигурации -> Компоновщик -> Ввод -> Дополнительные зависимости: Добавить "C:\<path-to-your-project>\build\packages\boost_serialization-vc140.1.64.0.0\lib\native\address-model-64\lib\libboost_serialization-vc140-mt-s-1_64.lib"
...