Vinculación contra Boost python 3.6. no se puede encontrar boost_python en lugar de boost_python3

Tengo problemas para enlazar contra el impulso de 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 usuario-config.jam:

 using python : 3.6 # Version : C:\\Python36\\python.exe # Python Path : C:\\Python36\\include # include path : C:\\Python36\\libs # lib path(s) : BOOST_ALL_NO_LIB=1 ; 

Pero mientras construía mi proyecto de c ++ con la biblioteca de tiempo de ejecución: DLL multihilo (/ MD), sigo recibiendo este mensaje de error:

 Error LNK1104 cannot open file 'boost_python-vc141-mt-gd-1_64.lib' 

pero las bibliotecas boost 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. Btw .: cambiar el nombre de los archivos a boost_python- (eliminar el 3) funciona bien. Pero no creo que esta sea la forma correcta.


    Configuración del proyecto VC:

    Añadir. incluir directorios:

     C:\Python36\include;D:\ws\boost_1_64_0\boost_1_64_0; 

    Añadir. directorios de bibliotecas:

     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 funcionó correctamente con python 3. La macro boost_module_name se estableció en boost_python (faltando el 3) y las librerías generadas contenían el 3.

    -> Desactivó el enlace automático y agregó las libs 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) Desactive la vinculación automática definiendo BOOST_ALL_NO_LIB y luego configure explícitamente boost_python3 … lib como dependencia del vinculador.

    Tu provees

     boost_python3-vc141-mt-gd-1_64.dll boost_python3-vc141-mt-gd-1_64.lib 

    pero el error informa que falta

     boost_python-vc141-mt-gd-1_64.lib 

    (¡encuentra la diferencia!)

    Obviamente, su IDE (VS) intenta construir una extensión de python, no de python3. No sé VS, pero debe estar lejos para cambiar eso en algún lugar de alguna manera.

    Perdón por llegar tarde aquí, solo pasé por la misma tontería. Resulta que boost no maneja dos instalaciones muy bien (o incluso un py3.x por sí mismo)

    Definitivamente puedes resolver esto entrando en y haciendo un cambio rápido. Para permitir que el impulso funcione con python 2.x (2.7, presumiblemente) y 3.x, sugeriría cambiar:

    #define BOOST_LIB_NAME boost_python

    a

     #if PY_MAJOR_VERSION >=3 #define BOOST_LIB_NAME boost_python3 #else #define BOOST_LIB_NAME boost_python #endif 

    Solo quiero ir aquí, ya que esto me pasó a mí. Aqui esta el link. Es posible que haya incluido los 2.7 encabezados de python en lugar de los 3.6. Y sí, nada de eso es obvio, realmente me puso a trabajar.