我一直试图使用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.cpp
,hello.py
,一些.lib
(比如boost_python3-vc140-mt-gd-1_64.lib或其他东西),教程目录中的Jamfile
,bjam.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