Компоновщик VisualStudio 2015 ищет библиотеку VS 2010

Я пытаюсь скомпилировать старый проект 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’? (т.е. это то, что я пропустил в конфигурации?)

0

Решение

В 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

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]