ошибка lld-link при компиляции проекта C с Clang в Visual Studio 2019

#visual-c #clang #c 14

Вопрос:

Прошло около недели, в течение которой я занят компиляцией своего проекта с Clang в VS2019, но я не могу. Я обновляю VS2019 до последней версии, и теперь я использую Clang 12.00.

В моем проекте я использую библиотеку boost. Чтобы создать библиотеку boost, я выполняю следующие команды:

 bootstrap --with-toolset=clang-win
b2.exe link=static threading=multi runtime-link=shared address-model=64 toolset=clang-win variant=release --build-type=complete --architecture=x64 cxxflags=-std=c  14
 

Компиляция выдает мне эту ошибку:

 1>lld-link : error : undefined symbol: __declspec(dllimport) public: __cdecl boost::thread::~thread(void)
 

Я думал, что библиотека boost несовместима. VS может найти библиотеки boost, но я думаю, что он не может читать внутри этого.

Комментарии:

1. Возможно, вы пытаетесь связать Boost. Поток статически. Это не поддерживается, см., Например boost.org/doc/libs/1_77_0/libs/config/doc/html/index.html

Ответ №1:

Ответ заключается в том, что когда вы используете boost с clang, вы должны установить BOOST_THREAD_USE_LIB флаг в своем коде. Итак, я добавляю следующий код Cmake в свой CmakeListss.txt файл в код, и я мог бы это исправить.
add_definitions(-DBOOST_THREAD_USE_LIB)