2015-04-04 6 views
2

Я пытаюсь получить boost-python extension module tutorial, работающий над современным компилятором C++ 14 в Windows 10. Я загрузил последние версии источника 1.57 и источника python 3.5a с использованием vc-14 (VS 2015 CTP 5).Компиляция учебника boost-python с VS-2015 CTP 5 и Python 3.5a на Windows 10 TP

Я скомпилировал python из источника используя VS 2015 CTP 5 и эти инструкции: 1.1.3.3. Windows.

Я запустить команду

.\bootstrap.bat && .\b2 stage toolset=msvc --with-python 

из папки подталкивание проекта C: \ импульс

Это файл пользовательского config.jam в моем домашнем каталоге:

using msvc : 14.0 : C:\\Program\ Files\ (x86)\\Microsoft\ Visual\ Studio\ 14.0\\VC\\bin\\cl.exe ; 

using python                      
     : 3.5          # Version                
     : C:\\python35a3\\PCBuild\\win32\\python.exe # Python Path        
     : C:\\python35a3\\include     # include path         
     : C:\\python35a3\\libs      # lib path          
     : <define>BOOST_ALL_NO_LIB=1                 
     ; 

Запуск bjam в каталоге учебника приводит к несовместимости при создании файла pdb:

c:\boost\libs\python\example\tutorial>bjam --debug-configuration 
     notice: found boost-build.jam at C:/boost/libs/python/example/tutorial/boost-build.jam 
     notice: loading Boost.Build from C:/boost/tools/build/src 
    .... 
     notice: Loading user-config configuration file 'user-config.jam' from 'C:/Users/marcel'. 
     notice: [msvc-cfg] msvc-14.0 detected, command: 'C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\cl.exe' 
     notice: [msvc-cfg] msvc-12.0 detected, command: 'C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\cl.exe' 
     notice: will use 'C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\cl.exe' 'C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\cl.exe' for msvc, condition <toolset>msvc-14.0 
     notice: [msvc-cfg] condition: '<toolset>msvc-14.0/<architecture>/<address-model>', setup: 'call "C:\Users\marcel\AppData\Local\Temp\b2_msvc_14.0_vcvarsall_x86.cmd" >nul 
     ' 
     notice: [msvc-cfg] condition: '<toolset>msvc-14.0/<architecture>/<address-model>32', setup: 'call "C:\Users\marcel\AppData\Local\Temp\b2_msvc_14.0_vcvarsall_x86.cmd" >nul 
     ' 
     notice: [msvc-cfg] condition: '<toolset>msvc-14.0/<architecture>x86/<address-model>', setup: 'call "C:\Users\marcel\AppData\Local\Temp\b2_msvc_14.0_vcvarsall_x86.cmd" >nul 
     ' 
     notice: [msvc-cfg] condition: '<toolset>msvc-14.0/<architecture>x86/<address-model>32', setup: 'call "C:\Users\marcel\AppData\Local\Temp\b2_msvc_14.0_vcvarsall_x86.cmd" >nul 
     ' 
     notice: [python-cfg] Configuring python... 
     notice: [python-cfg] user-specified version: "3.5" 
     notice: [python-cfg] user-specified cmd-or-prefix: "C:\python35a3\PCBuild\amd64\python_d.exe" 
     notice: [python-cfg] user-specified includes: "C:\python35a3\include" 
     notice: [python-cfg] user-specified libraries: "C:\python35a3\libs" 
     notice: [python-cfg] user-specified condition: "<define>BOOST_ALL_NO_LIB=1" 
     notice: [python-cfg] Checking interpreter command "C:\python35a3\PCBuild\amd64\python_d.exe"... 
     notice: [python-cfg] running command 'DIR /-C /A:S "C:\Python35a3\PCbuild\amd64\python_d.exe" 2>&1' 
     notice: [python-cfg] running command 'C:\python35a3\PCBuild\amd64\python_d.exe -c "from sys import *; print('version=%d.%d\nplatform=%s\nprefix=%s\nexec_prefix=%s\nexecutable=%s' % (version_info[0],version_info[1],platform,prefix,exec_prefix,executable))" 2>&1' 
     notice: [python-cfg] ...requested configuration matched! 
     notice: [python-cfg] Details of this Python configuration: 
     notice: [python-cfg] interpreter command: "C:\python35a3\PCBuild\amd64\python_d.exe" 
     notice: [python-cfg] include path: "C:\python35a3\include" 
     notice: [python-cfg] library path: "C:\python35a3\libs" 
     notice: [python-cfg] DLL search path: "C:\python35a3" 
     notice: Searching '../../../..' for project-config configuration file 'project-config.jam'. 
     notice: Loading project-config configuration file 'project-config.jam' from '../../../..'. 
    .... 
     ...patience... 
     ...patience... 
     ...found 1893 targets... 
     ...updating 6 targets... 
     msvc.link.dll bin\msvc-14.0\debug\threading-multi\hello_ext.dll 
      Creating library bin\msvc-14.0\debug\threading-multi\hello_ext.pdb and object bin\msvc-14.0\debug\threading-multi\hello_ext.exp 
     LINK : fatal error LNK1207: incompatible PDB format in 'c:\boost\libs\python\example\tutorial\bin\msvc-14.0\debug\threading-multi\hello_ext.pdb'; delete and rebuild 

    .... 

    ...removing bin\hello.test\msvc-14.0\debug\threading-multi\hello.py 
    ...skipped <pbin\hello.test\msvc-14.0\debug\threading-multi>hello for lack of <pbin\hello.test\msvc-14.0\debug\threading-multi>hello.py... 
    ...failed updating 3 targets... 
    ...skipped 3 targets... 

Команда производит вывод ошибки:

команда
call "C:\Users\marcel\AppData\Local\Temp\b2_msvc_14.0_vcvarsall_x86.cmd" >nul 

link /NOLOGO /INCREMENTAL:NO /DLL /NOENTRY /DEBUG /MACHINE:X86 /MANIFEST /subsystem:console /out:"bin\msvc-14.0\debug\threading-multi\hello_ext.dll" /IMPLIB:"bin\msvc-14.0\debug\threading-multi\hello_ext.pdb" /LIBPATH:"C:\python35a3\libs" @"bin\msvc-14.0\debug\threading-multi\hello_ext.dll.rsp" 

Creating library bin\msvc-14.0\debug\threading-multi\hello_ext.pdb and object bin\msvc-14.0\debug\threading-multi\hello_ext.exp 
LINK : fatal error LNK1207: incompatible PDB format in 'c:\boost\libs\python\example\tutorial\bin\msvc-14.0\debug\threading-multi\hello_ext.pdb'; delete and rebuild 

Ссылка, кажется, согласуется с тем, как питона и повышения компилируются (32 бит на одной и той же версии компилятора).

Есть ли способ диагностировать, где эта ошибка возникла?

ОБНОВЛЕНИЕ: Сборка с VC9 (VS2010) и 3.4 установкой прекомпилированного Python. Я все еще получаю ту же ошибку:

link /NOLOGO /INCREMENTAL:NO /DLL /NOENTRY /DEBUG /MACHINE:X86 /MANIFEST /subsystem:console /out:"bin\msvc-10.0\debug\threading-multi\hello_ext.pyd" /IMPLIB:"bin\msvc-10.0\debug\threading-multi\hello_ext.pdb" /LIBPATH:"C:\python34\libs" @"bin\msvc-10.0\debug\threading-multi\hello_ext.pyd.rsp" 

Creating library bin\msvc-10.0\debug\threading-multi\hello_ext.pdb and object bin\msvc-10.0\debug\threading-multi\hello_ext.exp 

LINK : fatal error LNK1207: incompatible PDB format in 'c:\boost\libs\python\example\tutorial\bin\msvc-10.0\debug\threading-multi\hello_ext.pdb'; delete and rebuild 

Запуска интерпретатора, чтобы подтвердить правильность версии компилятора:

c:\Python34\python.exe 
Python 3.4.2 (v3.4.2:ab2c023a9432, Oct 6 2014, 22:15:05) [MSC v.1600 32 bit (Intel)] on win32 
Type "help", "copyright", "credits" or "license" for more information. 
>>> 

Видимо эта ошибка не имеет ничего общего с «кровоточащими краями Нессами» окружающей среды сборка работает. Скорее, это прямой результат проблемы с настройкой форсированной сборки.

UPDATE 2: Попытка же тест с прекомпилированных Python 2.7 и VS 2008 приводит к одной и той же ошибки.

UPDATE 3решаемых Это правильно строит на повышающем v1.55, когда предпринимаются следующие шаги:

  • Скачать и построить питон 3.5 a3 и построить импульс 1,55 с VC14 по модифицируя пользователь конфигурация.варенье файл в домашней директории и работает «этап bjam --use-питон»
  • Move результирующие файлы в стадии \ Lib из libboost * увеличить * запустить bjam из каталога учебника
  • Изменения блуждающих команд ссылки добавив следующий переключатель LIBPATH: /LibPath: C: \ boost_1_55_0 \ ЭТАП \ Lib

Проблема ссылки на Python 3.5 alpha3 с VC14 изолирован для повышения v1.57 сборки.

+0

UPDATE: Я попытался построить с помощью MSVC9 и предварительно построенной версии python 3.4, которая привела к той же ошибке. – hhbilly

ответ

0

Да, я думаю, Boost.Build 1.59 (и, возможно, 1.57 и 1.58) разбит на Windows. Я отказался от использования Boost.Build и сам построил.

4

Проблема, кажется, была представлена ​​с 1.56. Я сумел получить Boost.Build снова работает путем редактирования файла:

D:\boost\boost_1_59_0\tools\build\src\tools\msvc.jam 

Я сделал два изменения:

  1. Изменить это (строки # 1351-1355):

     generators.register [ new msvc-linking-generator msvc.link.dll : 
         OBJ SEARCHED_LIB STATIC_LIB IMPORT_LIB : SHARED_LIB IMPORT_LIB : 
         <toolset>msvc <suppress-import-lib>false ] ; 
        generators.register [ new msvc-linking-generator msvc.link.dll : 
         OBJ SEARCHED_LIB STATIC_LIB IMPORT_LIB : SHARED_LIB : 
         <toolset>msvc <suppress-import-lib>true ] ; 
    

    к:

    generators.register [ new msvc-linking-generator msvc.link.dll : 
         OBJ SEARCHED_LIB STATIC_LIB IMPORT_LIB : SHARED_LIB IMPORT_LIB : 
         <toolset>msvc ] ; 
    
  2. Удалите эту строку (# 1472):

    toolset.flags msvc.link.dll LINKFLAGS <suppress-import-lib>true : /NOENTRY ; 
    

Я проверил это на Win7 с VS2012 и Python 2.7.

+0

Пробовал это обходное решение для Win10, VS2015, Python 2.7 и boost 1.62.0, и он также работает. –

 Смежные вопросы

  • Нет связанных вопросов^_^