У меня есть статические или динамические библиотеки ускорения?
Я побежал 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
. Если нет, вам придется перестроить, чтобы создавать статические версии.
Ответ 3
См. Увеличить начальные окна в разделе 6.3 именования и раздел 6.1 на Unix именования
Для статических библиотек там должно быть s, например. -sgd, поэтому у вас есть динамические библиотеки
Ответ 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
Ответ 5
Пожалуйста, проверьте этот документ:
http://www.boost.org/doc/libs/1_45_0/more/getting_started/windows.html#library-naming
Здесь вы можете найти значения всех букв и как вы можете построить повышение соответственно...