Vinculación contra Boost python 3.6. no puedo encontrar boost_python en lugar de boost_python3
Tengo problemas para vincular contra boost python.
Estoy usando Visual Studio 2017 y compilé el paquete boost 1_64 con la siguiente línea de comando:
b2 -a toolset=msvc-14.1 --build_type=complete stage variant=debugthreading=multi link=shared runtime-link=shared define=_ITERATOR_DEBUG_LEVEL=0 address-model=64
con este user-config.jam:
using python
: 3.6 # Version
: C:\\Python36\\python.exe # Python Path
: C:\\Python36\\include # include path
: C:\\Python36\\libs # lib path(s)
: <define>BOOST_ALL_NO_LIB=1
;
Pero mientras construyo mi proyecto c ++ con runtime libary: DLL multiproceso (/ MD) sigo recibiendo este mensaje de error:
Error LNK1104 cannot open file 'boost_python-vc141-mt-gd-1_64.lib'
pero las bibliotecas de impulso que compilé contienen los siguientes archivos boost_python:
boost_python3-vc141-mt-gd-1_64.dll
boost_python3-vc141-mt-gd-1_64.lib
¿Alguien tiene experiencia con boost para python 3? Después de horas de intentarlo, no puedo encontrar una buena solución. Por cierto: cambiar el nombre de los archivos a boost_python- (eliminando los 3) funciona bien. Pero no creo que esta sea la forma correcta
Configuración del proyecto de VC:
Añadir. incluir directorios:
C:\Python36\include;D:\ws\boost_1_64_0\boost_1_64_0;
Añadir. directorios de la biblioteca:
D:\ws\boost_1_64_0\boost_1_64_0\stage\lib;C:\Python36\libs;
Cerrado: la función de enlace automático de boost no funcionaba correctamente con python 3. La macro boost_module_name se configuró en boost_python (falta el 3) y las bibliotecas generadas contenían el 3.
-> Apagó el enlace automático y agregó las librerías requeridas manualmente.
Solución a) Vaya a boost / python / detail / config.hpp y cambie BOOST_LIB_NAMe a boost_python3 en lugar de boost_python.
o
Solución b) Active el enlace automático definiendo BOOST_ALL_NO_LIB y luego establezca explícitamente boost_python3 ... lib como dependencia del vinculador.