Невозможно связать библиотеку Boost с MSVC: невозможно открыть файл * .lib - PullRequest
0 голосов
/ 22 ноября 2018

Я использую CLion и CMake для связи с Boost и в качестве набора инструментов я выбрал компилятор MSVC:

Моя архитектура настроена как amd64, так как я использую 64-разрядную систему (по умолчанию x86 пытается найти только 32-разрядные версии Boost, которые мне не нужны).

Кроме того, я скомпилировал 64-битные библиотеки, используя это руководство.Я настраиваю свой CMake файл соответственно:

set(BOOST_ROOT "C:/local/boost_1_69_0_b1_rc3")
set(BOOST_LIBRARYDIR "C:/local/boost_1_69_0_b1_rc3/stage/x64/lib")
set(BOOST_INCLUDEDIR "C:/local/boost_1_69_0_b1_rc3/boost")

Мой main.cpp компилируется просто отлично, но я получаю ошибку компоновщика:

====================[ Build | BoostTesting | Debug ]============================
C:\Users\User\AppData\Local\JetBrains\Toolbox\apps\CLion\ch-0\183.4284.104\bin\cmake\win\bin\cmake.exe --build D:\Cpp\BoostTesting\cmake-build-debug --target BoostTesting --
[ 50%] Linking CXX executable BoostTesting.exe
LINK Pass 1: command "C:\PROGRA~2\MICROS~3\2017\ENTERP~1\VC\Tools\MSVC\1415~1.267\bin\Hostx64\x64\link.exe /nologo @CMakeFiles\BoostTesting.dir\objects1.rsp /out:BoostTesting.exe /implib:BoostTesting.lib /pdb:D:\Cpp\BoostTesting\cmake-build-debug\BoostTesting.pdb /version:0.0 /machine:x64 /debug /INCREMENTAL /subsystem:console C:\local\boost_1_69_0_b1_rc3\stage\x64\lib\libboost_filesystem-vc141-mt-gd-x64-1_69.lib C:\local\boost_1_69_0_b1_rc3\stage\x64\lib\libboost_system-vc141-mt-x64-1_69.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST /MANIFESTFILE:CMakeFiles\BoostTesting.dir/intermediate.manifest CMakeFiles\BoostTesting.dir/manifest.res" failed (exit code 1104) with the following output:
LINK : fatal error LNK1104: cannot open file 'libboost_iostreams-vc141-mt-gd-x64-1_69.lib'
NMAKE : fatal error U1077: 'C:\Users\User\AppData\Local\JetBrains\Toolbox\apps\CLion\ch-0\183.4284.104\bin\cmake\win\bin\cmake.exe' : return code '0xffffffff'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.15.26726\bin\HostX64\x64\nmake.exe"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.15.26726\bin\HostX64\x64\nmake.exe"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.15.26726\bin\HostX64\x64\nmake.exe"' : return code '0x2'
Stop.

При использовании x86_amd64 в качестве архитектурыэто также не в состоянии связать.Другие архитектуры не имеют смысла для моего ПК:

Использование предварительно скомпилированных двоичных файлов отсюда также не может связать.Как исправить эту проблему с ссылками?

1 Ответ

0 голосов
/ 09 декабря 2018

Просто установив BOOST_ROOT в CMakeLists.txt

set(BOOST_ROOT "C:/local/boost_1_69_0_b1_rc3")

и используя amd64 в качестве архитектуры, неожиданно получилось.Использование MSVC с CMake лучше поддерживается с Visual Studio (вполне очевидно), и связь с Boost больше не была проблемой.Теперь сборка также работает с CLion, но Visual Studio предпочтительнее, пока CLion возможно не улучшится MSVC интеграция.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...