Python快速启动链接器错误
我只是试着按照说明让快速入门示例正常工作。我在Windows7上尝试使用MSVC。我已经安装了Python 2.7 我所做的:Python快速启动链接器错误,python,c++,visual-c++,boost,boost-python,Python,C++,Visual C++,Boost,Boost Python,我只是试着按照说明让快速入门示例正常工作。我在Windows7上尝试使用MSVC。我已经安装了Python 2.7 我所做的: 下载boost_1_57_0.zip并解压缩到C:\boost_1_57_0 从C:\boost\u 1\u 57\u 0中的命令提示符运行: bootstrap 然后: 按照5.1中的说明。在此之后,我有一条消息说:“成功地构建了Boost C++库!” 将C:\boost\u 1\u 57\u 0添加到我的路径。指令并没有说要这样做,但既然他们想让我调用bjam
- 下载boost_1_57_0.zip并解压缩到
C:\boost_1_57_0
- 从
中的命令提示符运行:C:\boost\u 1\u 57\u 0
然后: 按照5.1中的说明。在此之后,我有一条消息说:“成功地构建了Boost C++库!”bootstrap
- 将
添加到我的路径。指令并没有说要这样做,但既然他们想让我调用bjam,而bjam就住在那里,我想我需要这样做C:\boost\u 1\u 57\u 0
- 修改
,使路径为C:\boost\u 1\u 57\u 0\libs\python\example\quickstart\boost build.jam
boost build../../../../tools/build/src代码>而不是
boostbuild../../../../../tools/build/v2代码>。这是按照说明进行的,因为原始路径是错误的,如果不这样做,bjam调用将失败
- 将CD放入
并运行:C:\boost\u 1\u 57\u 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...
链接:致命错误LNK1207:C:\boost\u 1\u 57\u 0\libs\python\example\quickstart\bin\msvc-12.0\debug\threading multi\extensing.PDB'中的PDB格式不兼容;删除并重建
…失败的msvc.link.dll bin\msvc-12.0\debug\threading multi\extensing.pyd bin\msvc-12.0\debug\threading multi\extensing.pdb。。。
…正在删除bin\msvc-12.0\debug\threading multi\extensing.pdb
链接:警告LNK4001:未指定对象文件;使用的图书馆
链接:错误LNK2001:未解析的外部符号\u mainCRTStartup
bin\test\u embed.test\msvc-12.0\debug\threading multi\test\u embed.exe:致命错误LNK1120:1未解析外部
…msvc.link bin\test\u embed.test\msvc-12.0\debug\threading multi\test\u embed.exe bin\test\u embed.test\msvc-12.0\debug\threading multi\test\u embed.pdb失败。。。
…正在删除bin\test\u embed.test\msvc-12.0\debug\threading multi\test\u embed.pdb
…由于缺少test\u embed.exe,跳过了test\u embed.run。。。
…更新4个目标失败。。。
有什么想法吗?我也看到了PDB格式不兼容的问题,但仅在1.57中出现过,这(因为Boost.Python源代码对于1.57和1.55是相同的,我可以在1.55上运行),我猜这与Boost::build路径中的更改有一定关系
我必须让它使用1.55,也许这会有一些帮助。1.59仍然存在问题。我已设法通过编辑文件使Boost.Build重新工作:
D:\boost\boost_1_59_0\tools\build\src\tools\msvc.jam
我做了两个改变:
generators.register[新建msvc链接生成器msvc.link.dll:
OBJ搜索的库静态库导入库:共享库导入库:
msvc假];
generators.register[新建msvc链接生成器msvc.link.dll:
OBJ搜索库静态库导入库:共享库:
msvc真];
致:
generators.register[新建msvc链接生成器msvc.link.dll:
OBJ搜索的库静态库导入库:共享库导入库:
msvc];
toolset.flags msvc.link.dll LINKFLAGS true:/NOENTRY;
- (在windows上,安装了visual studio 2017和SDK,安装了python 3.5)
- 下载并解压缩它,如C:\boost\u 1\u 68\u 0
- 运行bootstrap.bat
- 构建boost python库:
- 转到C:\boost\u 1\u 68\u 0\libs\python\example,修复Jamroot以查找头文件
项目
:要求
C:\\boost\u 1\u 68\u 0
boost_python
谢谢,很抱歉我不得不离开这里,几个月没有再尝试,但现在我已经按照链接的说明进行了操作,它似乎可以工作了。对于其他人:似乎最简单的方法是使用1.55,因为1.56及以上版本存在pdb格式问题。另外,我认为我不会像你建议的那样设置user-config.jam。顺便说一句,你的博客user-config.jam中有一个输入错误-你在这里拼写错了“python”:“C:\\Pyhton27-32\\libs#link libs”。我已经更新了要点,谢谢你指出这个错误。另外,1.59也将在下周发布,我希望到时候可以修复。我可以确认当前的boost 1.62也有同样的问题。此修复程序正在运行(在Windows 10上使用msvc-12
和python-3.4
进行了测试)。
D:\boost\boost_1_59_0\tools\build\src\tools\msvc.jam
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 ] ;
toolset.flags msvc.link.dll LINKFLAGS <suppress-import-lib>true : /NOENTRY ;