В некоторых проектах я все еще привязан к 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?
Спасибо.