坚持Boost-Python教程(Boost 1_64_0,Python3.6和msvc 14.0)

时间:2017-07-24 15:36:34

标签: python python-3.x boost boost-python bjam

我一直试图使用Boost-Python(在安装了VS2015和Python 3.6的Windows 10上)达到0级,即构建教程,基本上是最后整整3天。 我首先尝试通过官方教程: - http://www.boost.org/doc/libs/1_64_0/libs/python/doc/html/tutorial/tutorial/hello.html 但它不会起作用。在我看来,这个例子是这样设置的,它需要' Jamfile'在'教程'目录和' Jamroot'在父目录中。

经过调查/搜索,我开始回答: - Can't run bjam to compile boost python tutorial 目前我被困在

  

致命错误C1083:无法打开包含文件:' boost / python / module.hpp':没有这样的文件或目录

我会继续尝试,但第一个问题: -

1)对我来说,我应该能够使用bjam.exe和boost_1_64_0 \ libs \ python \ tutorial中的以下文件进行构建:hello.cpphello.py,一些.lib(比如boost_python3-vc140-mt-gd-1_64.lib或其他东西),教程目录中的Jamfilebjam.exe和父目录中的Jamroot user-config.jam是合适的import python ; project tutorial : requirements <location>. ; python-extension hello_ext : hello.cpp ; run-test hello : hello_ext hello.py ; alias test : hello ; explicit test ; 在我的HOMEPATH中。是对的吗 ?

事实上,经过上周的思考和尝试,我得到了进一步的优势,得到以下链接器错误: -

  

LINK:致命错误LNK1207:C:\ Program Files \ boost \ boost_1_64_0 \ libs \ python \ example \ tutorial \ hello_ext.pdb&#39;中不兼容的PDB格式;删除并重建   呼叫&#34; C:\ Users \ DIAMON~1 \ AppData \ Local \ Temp \ b2_msvc_14.0_vcvarsall_x86.cmd&#34;   nul link / NOLOGO / INCREMENTAL:NO / DLL / NOENTRY / DEBUG / MACHINE:X86 / MANIFEST / subsystem:console /out:"hello_ext.dll" /IMPLIB:"hello_ext.pdb" / LIBPATH:&#34; C:\用户\ DiamondExp \应用程序数据\本地\程序\的Python \ Python36-32 \库&#34; @&#34; hello_ext.dll.rsp&#34;

     

如果%ERRORLEVEL%NEQ 0 EXIT%ERRORLEVEL%

     

...失败msvc.link.dll hello_ext.dll hello_ext.pdb hello_ext.pdb ...

然后我输了 - 我必须非常可耻地承认 - 部分工作的Jamfile / Jamroot当我愚蠢地删除了我的整个boost目录以从#34;干净状态&#34;开始。真的很蠢。 无论如何,我无法从这个致命的错误LNK1207中找到任何地方。

我非常渴望进入这种Boost-Python的东西,会让我的生活变得更轻松。所以我非常感谢来自经验丰富的Boost-Python和/或Boost.Build用户的任何意见,并且可能会回答以下任何具体问题:

2)我应该如何修改我的&#lib; \ python \ example \ Jamroot&#39; (特别是在&#34;&lt; location&gt;&#34;)和&#39; libs \ python \ example \ tutorial \ Jamfile&#39; ? 现状如下。 什么是所谓的&#34;默认位置&#34;对于Boost.Python?

3)它是否是ditch bjam.exe的一个很好的替代品并尝试使用VisualStudio 2015直接构建? 就像那里:Building/including Boost.Python in VS2013

4)从一些帖子看来,在Boost 1_55之后发生了一些事情。有几个人无法上班。 Boost-Python和msvc14.0或Python 3.x之间是否存在任何已知的兼容性问题? 例如 : Compile boost-python tutorial with VS-2015 CTP 5 and Python 3.5a on Windows 10 TP

5)我对32位/ 64位的东西感到困惑。我安装了64位操作系统(Windows10)和Python 32位。我应该如何匹配我的地址模型选项&#39;在b2.exe的调用中?这有什么关系吗?

6)是否值得使用.dll而不是.lib?

希望有人能做到这一点......

Jamfile :(没有默认修改)

import python ;

if ! [ python.configured ]
{
  ECHO "warning: no Python configured in user-config.jam" ;
  ECHO "warning: will use default configuration" ;
  using python ;
}

# Adjust the following if Boost.Python isn't installed in a default location
lib boost_python ;

project
  : requirements
    <include>C:\\Users\\DiamondExp\\Downloads\\boost_1_64_0\\boost_1_64_0\\boost\\python
    <library>boost_python
;

rule run-test ( test-name : sources + )
{
  import testing ;
  testing.make-test run-pyd : $(sources) : : $(test-name) ;
}

#build-project quickstart ;
build-project tutorial ;
if [ python.numpy ]
{
  build-project numpy ;
}

Jamroot:

# -------------------
# MSVC configuration.
# -------------------

# Configure specific msvc version (searched for in standard locations and PATH).
using msvc : 14.0 : "C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\bin\\cl.exe" ;


# ---------------------
# Python configuration.
# ---------------------

# Configure specific Python version.
# using python : 3.6 : /usr/bin/python3 : /usr/include/python3.1 : /usr/lib ;

using python 
    : 3.6                   # Version
    : C:\\Users\\DiamondExp\\AppData\\Local\\Programs\\Python\\Python36-32\\python.exe      # Python Path
    : C:\\Users\\DiamondExp\\AppData\\Local\\Programs\\Python\\Python36-32\\include         # include path
    : C:\\Users\\DiamondExp\\AppData\\Local\\Programs\\Python\\Python36-32\\libs            # lib path(s)
    : <define>BOOST_ALL_NO_LIB=1
    ;

用户-config.jam中

$crontab -e

1 个答案:

答案 0 :(得分:2)

如果您对C ++到Python感兴趣,那么您应该看看Pybind11。它是一个基于Boost的头文件库,专注于将C ++绑定到Python。

您可以下载所有资源here

当我意识到在Windows上设置Boost python库时非常危险,这是我选择的选项。