Создание boost :: python в отладке с поддержкой отладки итератора - PullRequest
0 голосов
/ 04 марта 2019

В некоторых проектах я все еще привязан к MSVS 2010 из-за требований клиента, но теперь мы должны встроить в него Python 3.7, используя boost :: python.

Проблема возникает при использовании распределенных двоичных файлов boost webpage, гдепредоставленные библиотеки boost :: python связаны только с python 2.7.Здесь ключ должен состоять в том, чтобы скомпилировать себя библиотеки boost :: python, ссылающиеся на python 3.7, и я сделал это, собрав его с помощью b2.exe и следующего файла user-config.jam:

import toolset : using ;

using msvc : 10.0 ;

using python 
  : 3.7
  : # Interpreter
  : C:\\Python37\\include
  : C:\\Python37\\libs
  : 
  ;

option.set keep-going : false ;

и собравс помощью этой команды:

b2 -a --with-python python-debugging=off address-model=32 variant=debug link=static stage

Все компилируется, и все выглядит нормально, пока я не включу в проект какую-то другую статическую библиотеку надстроек (например, файловую систему), где я получаю следующую ошибку:

error LNK2038: se detectaron diferencias para '_ITERATOR_DEBUG_LEVEL': el valor '2' no coincide con el valor '0' en Test.obj

Я пытался создать boost :: python с 'define = _ITERATOR_DEBUG_LEVEL = 2', но компиляция не удалась (но это позволяет использовать 'define = _ITERATOR_DEBUG_LEVEL = 1' без жалоб).Я также попытался 'define = _HAS_ITERATOR_DEBUGGING = 1', и снова сборка завершается неудачей.

Единственный способ получить эту компиляцию - использовать эти два вместе:

define=BOOST_DEBUG_PYTHON define=_ITERATOR_DEBUG_LEVEL=2

Но затем он пытается связатьс python37_d.lib, и это не то, что мне нужно.

Есть ли способ получить boost :: python build с _ITERATOR_DEBUG_LEVEL = 2?

Спасибо.

...