В Visual Studio Boost используется boost / configure / auto_link.hpp для генерации имен библиотек и добавления их к зависимостям компоновщика. Одним из аргументов этого фрагмента кода является BOOST_LIB_NAME, который для boost :: python определен в boost / python / detail / config.hpp. В версии 1_67_0 это в настоящее время:
#define BOOST_LIB_NAME boost_python##PY_MAJOR_VERSION##PY_MINOR_VERSION
Где python patchlevel.h имеет определения для PY_MAJOR_VERSION и PY_MINOR_VERSION.
Это означает, что имя библиотеки не нужно явно добавлять в проект Visual Studio. Просто путь к каталогу буст-библиотек.
Мне нужно было удалить любые (повысить) имена библиотек из:
- Свойства конфигурации> Линкер> Вход> Дополнительные зависимости
- Свойства конфигурации> Линкер> Все параметры> Дополнительные зависимости
И нужно было убедиться, что я создал boost :: python с разделяемыми (dll) библиотеками, поскольку собирал DLL. Статические библиотеки - libboost * .lib, а общие библиотеки - boost * .lib. Для принудительного создания общих библиотек я использовал:
C:\dev\boost\boost_1_67_0> b2.exe link=shared,static --with-python -a