Я пытаюсь скомпилировать старый проект VS2010 в VS2015 с boost.python 1_67_0 из 1_53 и python 35.
Скомпилировать его было не так уж сложно, всего несколько настроек, чтобы включить путь и обновить пару обработчиков строк Python 2 до Python 3.
Но я застрял на связи, потому что компоновщик не в:
LINK : fatal error LNK1104: cannot open file 'boost_python-vc100-mt-gd-1_67.lib'
Что на самом деле не имеет смысла, потому что версия библиотеки должна быть vc140. В пути к библиотеке существуют опции libboost_python35-vc140-mt-gd-x32-1_67.lib и некоторые другие опции libboost_python35-vc140 *.
Откуда он получает название ‘boost_python-vc100-mt-gd-1_67.lib’? (т.е. это то, что я пропустил в конфигурации?)
В 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
Других решений пока нет …