如何在Visual Studio 2010和Python 3.4中使用boost.python教程?

2 投票
1 回答
2596 浏览
提问于 2025-04-18 10:23

我想在一台Win7的电脑上使用Boost.python,做一个连接我们C++ DLL的python 3.4项目。我正在按照boost.python的教程一步步来,但在第14步时遇到了问题,搞不定。我觉得这个问题和python 3.4没关系,可能是更简单的原因(在Visual Studio命令提示符中缺少路径设置)。我不知道该怎么解决!求助!

以下是我正在做的事情的详细信息:

正如我所说,我是在一台Win7(虚拟)机器上,尝试使用32位的python和Visual Studio。我已经安装了python 3.4,并且它在路径中...

我从这个讨论开始: 如何在Visual Studio 2010中使用Boost

我做了以下步骤:

  1. 启动Visual Studio 2010命令提示符: 菜单->程序->Microsoft Visual Studio 2010->Visual Studio工具->Visual Studio命令提示符
  2. cd C:\Boost\boost_1_55_0
  3. bootstrap
  4. b2 toolset=msvc-10.0 --build-type=complete --with-python --libdir=C:\Boost\lib\i386 install 最开始的警告 link.jam: 没有这样的文件或目录

    C:\Boost\boost_1_55_0>dir C:\Boost\lib\i386
     Volume in drive C has no label.
     Volume Serial Number is BCA0-48C6
    
     Directory of C:\Boost\lib\i386
    
    06/19/2014  11:45 AM    <DIR>          .
    06/19/2014  11:45 AM    <DIR>          ..
    06/19/2014  11:45 AM           217,088 boost_python-vc100-1_55.dll
    06/19/2014  11:45 AM           188,908 boost_python-vc100-1_55.lib
    06/19/2014  11:43 AM           496,640 boost_python-vc100-gd-1_55.dll
    06/19/2014  11:43 AM           190,156 boost_python-vc100-gd-1_55.lib
    06/19/2014  11:42 AM           217,088 boost_python-vc100-mt-1_55.dll
    06/19/2014  11:42 AM           190,156 boost_python-vc100-mt-1_55.lib
    06/19/2014  11:25 AM           496,640 boost_python-vc100-mt-gd-1_55.dll
    06/19/2014  11:25 AM           191,452 boost_python-vc100-mt-gd-1_55.lib
    06/19/2014  11:30 AM         5,757,576 libboost_python-vc100-1_55.lib
    06/19/2014  11:29 AM        22,050,448 libboost_python-vc100-gd-1_55.lib
    06/19/2014  11:24 AM         5,758,472 libboost_python-vc100-mt-1_55.lib
    06/19/2014  11:23 AM        22,051,792 libboost_python-vc100-mt-gd-1_55.lib
    06/19/2014  11:32 AM         6,247,162 libboost_python-vc100-mt-s-1_55.lib
    06/19/2014  11:31 AM        21,969,684 libboost_python-vc100-mt-sgd-1_55.lib
    06/19/2014  11:35 AM         6,246,266 libboost_python-vc100-s-1_55.lib
    06/19/2014  11:33 AM        21,968,340 libboost_python-vc100-sgd-1_55.lib
                  16 File(s)    114,237,868 bytes
                   2 Dir(s)  14,676,119,552 bytes free
    
  5. 打开Visual Studio 2010,创建一个名为 Python.Boost 的新“空项目”

  6. 右键点击 Property Manager->Release|Win32->Microsoft.Cpp.Win32.user,选择 Properties
  7. 选择 'VC++ Directories'
  8. 编辑 'Include Directories',添加 C:\Boost\include\boost_1_55_0\boost;C:\Python34\include
  9. 编辑 'Library Directories',添加 C:\Boost\lib\i386;C:\Python34\libs
  10. 按照这里的说明操作: http://www.boost.org/doc/libs/1_55_0/libs/python/doc/tutorial/doc/html/python/hello.html
  11. 在主目录下创建 user-config.jam 文件,内容如下:

    #  MSVC configuration
    using msvc : 10.0 ;
    # Python configuration:
    using python : 3.4 : C:\\Python34 : C:\\Python34\\include : C:\\Python34\\libs ;
    
  12. 打开一个Windows命令提示符(从Python.Boost项目通过工具->Visual Studio命令提示符启动)

  13. cd C:\Boost\boost_1_55_0\libs\python\example\tutorial
  14. 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 6 targets...
    msvc.link.dll bin\msvc-10.0\debug\hello_ext.pyd LINK : fatal error LNK1104:
    cannot open file 'boost_python-vc100-mt-gd-1_55.lib'
    
            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.pdb ...skipped <p.>hello_ext.pyd for lack of
    <pbin\msvc-10.0\debug>hello_ext.pyd... ...failed updating 2 targets...
    ...skipped 1 target...
    

我漏掉了什么吗?感觉路径没有按预期设置?非常感谢帮助!

1 个回答

0

我找到了之前失败问题的答案,但现在遇到了一个新问题(使用Python 3.4会导致链接器失败)。

为了解决这个问题,我在命令行中做了以下操作:

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

然后又运行了一次bjam。通过修改库设置,链接器找到了正确的文件。不过在使用Python 3.4时又出现了另一个链接问题(我会单独发请求寻求帮助)。

作为实验,我把环境切换回Python 2.7,修改了我的'config-user.jam'文件,内容变成了这样:

using python : 2.7 : C:\\Python27 : C:\\Python27\\include : C:\\Python27\\libs ;

这样程序就成功链接了,我可以运行hello.py程序(使用python2.7)。

关于3.4的链接问题看起来更麻烦,我在其他地方也看到过相关的评论。我还打算试试Python 3.2(或者任何“3”版本),看看能不能解决问题。我不一定需要用3.4,但至少需要Python 3。

撰写回答