фатальная ошибка LNK1104: невозможно открыть файл 'libboost_unit_test_framework-vc141-mt-x64-1_66.lib' - PullRequest
0 голосов
/ 03 марта 2020

Я пытаюсь собрать свою программу на C ++, которая включает в себя Boost библиотеку.

Я использую VisualStudio 2019 CMake проект в Windows 64-битной операционной системе .

Мой путь к каталогу буста: E: \ boost_1_66_0

Путь к моим библиотекам буста: E: \ boost_1_66_0 \ lib64-msv c - 14.1

Я могу найти библиотеку libboost_unit_test_framework-vc141-mt-x64-1_66.lib по указанному выше пути.

Но когда я пытаюсь собрать свою Программа, как правило, говорит об этой ошибке:

фатальная ошибка LNK1104: невозможно открыть файл 'libboost_unit_test_framework-vc141-mt-x64-1_66.lib'

Это мой CMakeLists.txt файл:

# TODO: Add tests and install targets if needed.
set(Boost_USE_STATIC_LIBS ON) 
set(Boost_USE_MULTITHREADED OFF)  
set(Boost_USE_STATIC_RUNTIME OFF)
set(Boost_NO_BOOST_CMAKE ON)

list(APPEND CMAKE_PREFIX_PATH E:/boost_1_66_0)

# Better to fail fast when there's a package missing
find_package(Boost 1.66.0 REQUIRED) 
add_executable (CMakeReemas "TestInMemStream.cpp" "TestOutMemStream.cpp" "TestTCPServer.cpp" "CMakeReemas.h")
target_link_libraries(CMakeReemas PRIVATE Boost::headers)

Я скачал boost_1_66_0-msv c -14.1-64.exe по этой ссылке:

Boost_1.66.0

Мне нужна помощь, пожалуйста! спасибо!

РЕДАКТИРОВАТЬ

Чтобы сделать некоторые пояснения, у меня есть 2 каталога Boost. Первый - сборка с использованием командной строки VS и использование MSV C 14.2 для VS2019.

Я пытался использовать это в проекте, но произошла та же ошибка, о которой я упоминал:

фатальная ошибка LNK1104: не удается открыть файл 'libboost_unit_test_framework-vc141-mt-x64-1_66.lib'

Между тем, я хочу знать, почему он жалуется на 14,1 для VS Версия 2017, в то время как я использую MSV C 14.2 в версии VS 2019 ??!

Вот почему я скачал второй Boost, построенный с MSV C 14.1 по ссылке, указанной выше, и я попытался построить свой проект, и я преуспел (НО НЕ СДЕЛАТЬ ПРОЕКТ!).

Но теперь я хочу использовать CMake.

1 Ответ

0 голосов
/ 03 марта 2020

Следующая последовательность команд CMake работала для OP:

set(BOOST_ROOT E:/boost_1_66_0)

set(Boost_USE_STATIC_LIBS ON)
set(Boost_USE_MULTITHREADED ON)
find_package(Boost COMPONENTS unit_test_framework REQUIRED)

add_executable(CMakeReemas "TestInMemStream.cpp" "TestOutMemStream.cpp" "TestTCPServer.cpp" "CMakeReemas.h")

target_link_libraries(CMakeReemas PRIVATE Boost::headers Boost::unit_test_framework)

Похоже, что возникла проблема с не многопоточными библиотеками Boost.

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