坚持学习BoostPython教程(Boost1_64_0、Python3.6和MSVC14.0)

坚持学习BoostPython教程(Boost1_64_0、Python3.6和MSVC14.0),python,python-3.x,boost,boost-python,bjam,Python,Python 3.x,Boost,Boost Python,Bjam,我一直在尝试使用Boost Python(在安装了VS2015和Python 3.6的Windows 10上)达到0级,即构建教程,这基本上是最后整整3天的时间,。 我首先尝试阅读官方教程:- 但这行不通。在我看来,该示例的设置需要“tutorial”目录中的“Jamfile”和父目录中的“Jamroot” 在调查/搜索之后,我开始回答:- 目前我被困在 致命错误C1083:无法打开包含文件:“boost/python/module.hpp”:没有此类文件或目录 我会继续尝试,但第一个问题:-

我一直在尝试使用Boost Python(在安装了VS2015和Python 3.6的Windows 10上)达到0级,即构建教程,这基本上是最后整整3天的时间,。 我首先尝试阅读官方教程:- 但这行不通。在我看来,该示例的设置需要“tutorial”目录中的“Jamfile”和父目录中的“Jamroot”

在调查/搜索之后,我开始回答:- 目前我被困在

致命错误C1083:无法打开包含文件:“boost/python/module.hpp”:没有此类文件或目录

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

1) 在我看来,我应该能够在boost_1_64_0\libs\python\tutorial中使用bjam.exe构建以下文件:
hello.cpp
hello.py
,一些
.lib
(如boost_python3-vc140-mt-gd-1_64.lib或其他文件),一个合适的
Jamfile
,教程目录中的
bjam.exe
,父目录中的适当
Jamroot
,以及我的HOMEPATH中的
user config.jam
。是这样吗

事实上,在上周进行了大量思考和尝试之后,我进一步取得了进步,出现了以下链接器错误:-

链接:致命错误LNK1207:C:\Program Files\boost\boost\u 1\u 64\u 0\libs\python\example\tutorial\hello\u ext.PDB'中的PDB格式不兼容;删除并重建 调用“C:\Users\DIAMON~1\AppData\Local\Temp\b2\u msvc\u 14.0\u vcvarsall\u x86.cmd” numlink/NOLOGO/INCREMENTAL:NO/DLL/NOENTRY/DEBUG/MACHINE:X86/MANIFEST/subsystem:console/out:“hello_ext.DLL”/IMPLIB:“hello_ext.pdb”/LIBPATH:“C:\Users\DiamondExp\AppData\Local\Programs\Python36-32\libs”@“hello_ext.DLL.rsp”

如果%ERRORLEVEL%NEQ 0退出%ERRORLEVEL%

…msvc.link.dll hello\u ext.dll hello\u ext.pdb hello\u ext.pdb失败

然后,当我愚蠢地删除我的整个boost目录以从“干净状态”开始时,我失去了部分工作的Jamfile/Jamroot,我不得不非常羞愧地承认。他真的很笨。 我真的找不到任何地方去从这个致命的错误LNK1207无论如何

我非常渴望进入这个Boost Python的领域,这将使我的生活更加轻松。因此,我非常感谢经验丰富的Boost Python和/或Boost.Build用户提供的任何意见,并可能回答以下任何具体问题:

2) 我应该如何修改我的“libs\python\example\Jamroot”(特别是在“”之后)和“libs\python\example\tutorial\Jamfile”呢? 当前状态转载如下。 Boost.Python的所谓“默认位置”是什么

3) 它是否是抛弃bjam.exe并尝试直接使用VisualStudio 2015构建的好替代方案? 比如:

4) 从一些帖子中可以看出,Boost 155之后发生了一些事情。有几个人无法让它工作。Boost Python和msvc14.0或Python 3.x之间有任何已知的兼容性问题吗? 例如:

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

6) 在这里使用.dll而不是.lib值得吗

希望有人能走那么远

Jamfile:(默认情况下未修改任何内容)

导入python;
项目教程
:要求
.
;
python扩展hello_ext:hello.cpp;
运行测试hello:hello\u ext hello.py;
别名测试:你好;
显式检验;
Jamroot:

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 ;
}
导入python;
如果![python.configured]
{
ECHO“警告:用户config.jam中未配置Python”;
ECHO“警告:将使用默认配置”;
使用python;
}
#如果Boost.Python未安装在默认位置,请调整以下内容
lib-boost_-python;
项目
:要求
C:\\Users\\DiamondExp\\Downloads\\boost\u 1\u 64\u 0\\boost\u 1\u 64\u 0\\boost\\python
增强python
;
规则运行测试(测试名称:sources+)
{
进口测试;
testing.make-test运行pyd:$(源代码):$(测试名称);
}
#构建项目快速启动;
构建项目教程;
if[python.numpy]
{
建立numpy项目;
}
user config.jam

# -------------------
# 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
    ;
#-------------------
#MSVC配置。
# -------------------
#配置特定的msvc版本(在标准位置和路径中搜索)。
使用msvc:14.0:“C:\\ProgramFiles(x86)\\Microsoft Visual Studio 14.0\\VC\\bin\\cl.exe”;
# ---------------------
#Python配置。
# ---------------------
#配置特定的Python版本。
#使用python:3.6:/usr/bin/python3:/usr/include/python3.1:/usr/lib;
使用python
:3.6#版本
:C:\\Users\\DiamondExp\\AppData\\Local\\Programs\\Python\\Python36-32\\Python.exe\Python路径
:C:\\Users\\DiamondExp\\AppData\\Local\\Programs\\Python\\Python36-32\\include#include path
:C:\\Users\\DiamondExp\\AppData\\Local\\Programs\\Python\\Python36-32\\libs\lib路径
:BOOST\u ALL\u NO\u LIB=1
;

如果你对C++感兴趣到Python,你应该看看。它是一个基于Boost的头文件库,它侧重于将C++绑定到Python。 您可以下载所有资源


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

IMHO,如果您还没有将BJam用于其他用途,请不要费心。这只是设置一些路径并与正确的LIB链接的问题,所以使用您熟悉的任何方法。为了补充@DanMašek的评论,最近Boost指导委员会宣布了将Boost build system移至CMake-see的愿望和意图。另一个不用麻烦bjam的原因,除非出于任何原因。谢谢你的建议。那我就直接试试VS。希望它能让我有所收获。你的第一句“我卡住了”是
# -------------------
# 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
    ;