У меня есть статические или динамические библиотеки ускорения?

Я побежал bjam.exe --build-dir="C:\build-boost" --build-type=minimal msvc stage

и теперь у меня есть библиотеки .lib с этими заголовками, например

libboost_serialization-vc100-mt
libboost_serialization-vc100-mt-1_45
libboost_serialization-vc100-mt-gd
libboost_serialization-vc100-mt-gd-1_45

Я считаю, что это должны быть статические библиотеки для отладки и выпуска версии. Когда я запускаю компилятор с Multi-threaded Debug (/MTd), он дает ошибку LNK1104: cannot open file 'libboost_serialization-vc100-mt-sgd-1_45.lib' Он ищет один с -sgd

Где я ошибаюсь?

Ответ 1

Что-то вроде сбивает с толку - есть два "статических" варианта для наращивания boost с помощью MSVC.

B2.exe берет опцию link=static, которая сообщает boost, что вы хотите связать IT статически. Если вы компилируете свой проект VC с помощью /MT или/MTd, вам также необходимо использовать параметр runtime-link=static, чтобы сообщить boost, что вы будете статически связываться с библиотеками времени исполнения VC.

Это второй runtime-link=static, который помещает -s в имя .lib.

Моя командная строка для повышения уровня сборки была

b2.exe --toolset=msvc variant=release link=static threading=multi runtime-link=static stage

Ответ 2

У вас есть динамические версии. Статические значения ограничены наличием "s" в названии. Убедитесь, что вы указали link=static в командной строке bjam. Если нет, вам придется перестроить, чтобы создавать статические версии.

Ответ 4

вот как я сломаю его

libboost_serialization-vc100-mt-sgd-1_45.lib

lib- if boost library starts with lib then its a static library , shared library do not start with lib prefix. Also static library will have a '-s' in the name.

mt- multi-threaded , obtained by specifying threading=multi when you ran bjam or b2.This is the default threading.

g- use debug libraries for building the code
d- build a debug version of your code

Итак, ваш компилятор ищет многопоточную статическую библиотеку отладки (mt-sgd) при запуске с помощью /MTd (создает отладочный многопоточный исполняемый файл с использованием LIBCMTD.lib). По-моему, по умолчанию он должен искать статическую библиотеку. Если вам нужна динамическая библиотека, вставьте эти строки в свой код или определите макрос

#define BOOST_ALL_DYN_LINK