gpt4 book ai didi

visual-studio-2010 - 如何获取 boost.python 教程示例以与 Python3 链接?

转载 作者:行者123 更新时间:2023-12-03 23:29:49 26 4
gpt4 key购买 nike

我想用boost.pythonpython 3.2+ (最好是 3.4)和 Visual Studio 2010。

当我尝试制作 libs\python\example\tutorial 时针对任何 Python3 的示例(我已经测试了 3.0、3.2 和 3.4)它没有链接(见下文)。当我将它与 2.7 链接时,它可以工作。

我在两次尝试之间所做的唯一更改是更新 user-config.jam在我的主目录中。

所以它作品 user-config.jam是:

#  MSVC configuration
using msvc : 10.0 ;
# Python configuration:
using python : 2.7 : C:\\Python27 : C:\\Python27\\include : C:\\Python27\\libs ;

当我跑 bjam我得到:
C:\Boost\boost_1_55_0\libs\python\example\tutorial>bjam
link.jam: No such file or directory
...patience...
...patience...
...found 1678 targets...
...updating 8 targets...
compile-c-c++ bin\msvc-10.0\debug\hello.obj
hello.cpp
msvc.link.dll bin\msvc-10.0\debug\hello_ext.pyd
Creating library bin\msvc-10.0\debug\hello_ext.lib and object bin\msvc-10.0\debug\hello_ext.exp
msvc.manifest.dll bin\msvc-10.0\debug\hello_ext.pyd
common.copy boost_python-vc100-gd-1_55.dll
..\..\..\..\bin.v2\libs\python\build\msvc-10.0\debug\boost_python-vc100-gd-1_55.dll
1 file(s) copied.
common.copy hello_ext.pyd
bin\msvc-10.0\debug\hello_ext.pyd
1 file(s) copied.
capture-output bin\hello.test\msvc-10.0\debug\hello
1 file(s) copied.
**passed** bin\hello.test\msvc-10.0\debug\hello.test
...updated 8 targets...

如果我改变 user-config.jam到:
#  MSVC configuration
using msvc : 10.0 ;
# Python configuration:
using python : 3.4 : C:\\Python34 : C:\\Python34\\include : C:\\Python34\\libs ;

并到 bjam clean然后 bjam我得到:
C:\Boost\boost_1_55_0\libs\python\example\tutorial>bjam
link.jam: No such file or directory
...patience...
...patience...
...found 1685 targets...
...updating 9 targets...
compile-c-c++ bin\msvc-10.0\debug\hello.obj
hello.cpp
msvc.link.dll bin\msvc-10.0\debug\hello_ext.pyd
Creating library bin\msvc-10.0\debug\hello_ext.lib and object bin\msvc-10.0\debug\hello_ext.exp
hello.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) struct _object * __cdecl boost::python::detail::init_module(struct PyModuleDef &,void (__cdecl*)(void))" (__imp_?init_module@detail@python@boost@@YAPAU_object@@AAUPyModuleDef@@P6AXXZ@Z) referenced in function _PyInit_hello_ext
bin\msvc-10.0\debug\hello_ext.pyd : fatal error LNK1120: 1 unresolved externals

call "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86 >nul
link /NOLOGO /INCREMENTAL:NO /DLL /DEBUG /MACHINE:X86 /MANIFEST /subsystem:console /out:"bin\msvc-10.0\debug\hello_ext.pyd" /IMPLIB:"bin\msvc-10.0\debug\hello_ext.lib" /LIBPATH:"C:\Python34\libs" @"bin\msvc-10.0\debug\hello_ext.pyd.rsp"
if %ERRORLEVEL% NEQ 0 EXIT %ERRORLEVEL%

...failed msvc.link.dll bin\msvc-10.0\debug\hello_ext.pyd bin\msvc-10.0\debug\hello_ext.lib bin\msvc-10.0\debug\hello_ext.pdb bin\msvc-10.0\debug\hello_ext.pdb...
...removing bin\msvc-10.0\debug\hello_ext.lib
...removing bin\msvc-10.0\debug\hello_ext.pdb
common.copy boost_python-vc100-gd-1_55.dll
..\..\..\..\bin.v2\libs\python\build\msvc-10.0\debug\boost_python-vc100-gd-1_55.dll
1 file(s) copied.
...skipped <p.>hello_ext.pyd for lack of <pbin\msvc-10.0\debug>hello_ext.pyd...
...failed updating 3 targets...
...skipped 1 target...
...updated 2 targets...

在线查看我找到了一些对这个错误的引用,但没有解决方案......
这是最好的链接:

http://lists.boost.org/boost-build/2011/06/25147.php

我看到很多人在谈论使用 Python3 和 boost.python 所以我一定遗漏了一些东西......我是否需要以某种方式专门为 Python 3 编译 boost?

帮助?

/罗伯特

最佳答案

所以通过反复试验,我找到了一种有效的方法。

我无法将 boost 库从 Python27 重新编译为 Python34 但是 如果我从一个干净的区域(即新 7zipped)开始并执行以下操作(全部在 Visual Studio 2010 命令提示符中):

  • 确保您有 user-config.jam主目录中的文件,内容如下:
    #  MSVC configuration
    using msvc : 10.0 ;
    # Python configuration:
    using python : 3.4 : C:\\Python34 : C:\\Python34\\include : C:\\Python34\\libs ;
  • cd C:\Boost\boost_1_55_0
  • bootstrap
  • b2 toolset=msvc-10.0 --build-type=complete --with-python --libdir=C:\Boost\lib\i386 install
  • cd C:\Boost\boost_1_55_0\libs\python\example\tutorial
  • set lib=c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\LIB;c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\ATLMFC\LIB;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib;C:\Boost\lib\i386;C:\Python34\libs (即将 Boost Lib 添加到路径)
  • bjam
  • 将 hello.py 修改为 att ()周围打印:
    import hello_ext
    print(hello_ext.greet())
  • python hello.py版画 hello, world (注意这里的python是我默认安装的python 3.4.1)

  • 所以我仍然不知道如何解决的是如何重新编译boost和/或如何同时支持两个python版本。欢迎提出想法和建议,但目前我只需要 Python3,所以我不会调查。

    另一件需要注意的是,网上找到的预编译头文件似乎都只有 2.7。我希望这些步骤可以帮助别人!

    关于visual-studio-2010 - 如何获取 boost.python 教程示例以与 Python3 链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24314644/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com