我只是按照说明here来启动Quickstart示例。我在Windows 7上并尝试使用MSVC。我安装了Python 2.7。
我做了什么:
C:\boost_1_57_0
。在C:\boost_1_57_0
的命令提示符下,运行:
bootstrap
然后:
.\b2
根据5.1 here下的说明。在此之后,我有一条消息说" Boost C ++库已成功构建!"。
C:\boost_1_57_0
添加到我的路径中。说明书没有说这样做,但由于他们希望我调用bjam及其所在的地方,我认为我需要这样做。C:\boost_1_57_0\libs\python\example\quickstart\boost-build.jam
,使路径为boost-build ../../../../tools/build/src ;
,而不是boost-build ../../../../tools/build/v2 ;
。这是根据说明here,因为原始路径是错误的,如果你不这样做,bjam调用就会失败。将CD转入C:\boost_1_57_0\libs\python\example\quickstart
并运行:
bjam toolset=msvc --verbose-test test
我得到的输出首先是:
...patience...
...patience...
...found 1926 targets...
...updating 55 targets...
common.mkdir bin
common.mkdir bin\test_ext.test
common.mkdir bin\test_ext.test\msvc-12.0
common.mkdir bin\test_ext.test\msvc-12.0\debug
common.mkdir bin\test_ext.test\msvc-12.0\debug\threading-multi
common.mkdir bin\msvc-12.0
common.mkdir bin\msvc-12.0\debug
common.mkdir bin\msvc-12.0\debug\threading-multi
compile-c-c++ bin\msvc-12.0\debug\threading-multi\extending.obj
extending.cpp
c:\python27\include\pymath.h(22) : warning C4273: 'round' : inconsistent dll linkage
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\math.h(516) : see previous definition of 'round'
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\xtgmath.h(190) : warning C4273: '_hypot' : inconsistent dll linkage
后面跟着一长串其他头文件条目,每个条目都抱怨dll链接不一致,然后最后出现一堆错误,其中包括:
LINK : fatal error LNK1207: incompatible PDB format in 'C:\boost_1_57_0\libs\python\example\quickstart\bin\msvc-12.0\debug\threading-multi\extending.pdb'; delete and rebuild
...failed msvc.link.dll bin\msvc-12.0\debug\threading-multi\extending.pyd bin\msvc-12.0\debug\threading-multi\extending.pdb...
...removing bin\msvc-12.0\debug\threading-multi\extending.pdb
LINK : warning LNK4001: no object files specified; libraries used
LINK : error LNK2001: unresolved external symbol _mainCRTStartup
bin\test_embed.test\msvc-12.0\debug\threading-multi\test_embed.exe : fatal error LNK1120: 1 unresolved externals
...failed msvc.link bin\test_embed.test\msvc-12.0\debug\threading-multi\test_embed.exe bin\test_embed.test\msvc-12.0\debug\threading-multi\test_embed.pdb...
...removing bin\test_embed.test\msvc-12.0\debug\threading-multi\test_embed.pdb
...skipped <pbin\test_embed.test\msvc-12.0\debug\threading-multi>test_embed.run for lack of <pbin\test_embed.test\msvc-12.0\debug\threading-multi>test_embed.exe...
...failed updating 4 targets...
有什么想法吗?
答案 0 :(得分:4)
问题仍然存在于1.59。我通过编辑文件设法让Boost.Build再次工作:
D:\boost\boost_1_59_0\tools\build\src\tools\msvc.jam
我做了两处修改:
更改此项(第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 ] ;
删除此行(#1472):
toolset.flags msvc.link.dll LINKFLAGS <suppress-import-lib>true : /NOENTRY ;
我已经使用VS2012和Python 2.7在Win7上对此进行了测试。
答案 1 :(得分:1)
我也看到了不兼容的PDB格式问题,但只有1.57,(因为Boost.Python源代码对于1.57和1.55是相同的,我可以让它在1.55上运行)我猜测是某种程度上相关的对boost :: build路径的更改。
我已经documented what I had to do让它与1.55一起工作,也许这会有所帮助。
答案 2 :(得分:1)
我告诉你疯了。
无论如何,我终于在boost_1_68_0上成功构建了快速入门示例。 快速指南:
C:\ boost_1_68_0>。\ b2 --with-python -j4
project
: requirements
<include>C:\\boost_1_68_0
<library>boost_python
C:\ boost_1_68_0 \ libs \ python \ example \ quickstart> .. \ .. \ .. \ .. \ b2.exe -j4
同样,这是-crazy-复合体。所有其他东西构建都很好,但是python链接确实坏了。无论如何,万一有人尝试,希望这会有所帮助。