【问题标题】:How to get boost.python tutorial to work with Visual Studio 2010 and python 3.4?如何获取 boost.python 教程以使用 Visual Studio 2010 和 python 3.4?
【发布时间】:2014-06-19 16:34:17
【问题描述】:

我想在 Win7 机器上为 python 3.4 项目使用 Boost.python 它将连接到我们的 C++ DLL。我正在通过 boost.python 工作 教程并且无法使其工作(请参见下面的第 14 步)。我不认为这 问题与 python 3.4 有关,但更简单(缺少路径设置 Visual Studio 命令提示符)。我不知道如何解决它!救命!

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

正如我所说,这是一台 Win7(虚拟)机器,我正在尝试使用 32 位运行 蟒蛇/视觉工作室。我确实安装了 python 3.4 并且在路径中......

从这个讨论开始: How to use Boost in Visual Studio 2010

我执行以下操作:

  1. 启动 Visual Studio 2010 命令提示符: Menu->Programs->Microsoft Visual Studio 2010->Visual Studio Tools->Visual Studio Command Prompt
  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: No such file or directory

    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-&gt;Release|Win32-&gt;Microsoft.Cpp.Win32.user并选择Properties
  7. 选择“VC++ 目录”
  8. 编辑“包含目录”以添加C:\Boost\include\boost_1_55_0\boost;C:\Python34\include
  9. 编辑“库目录”以添加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 项目通过 Tools->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...
    

我错过了什么?似乎路径没有按预期设置?感谢您的帮助!

【问题讨论】:

  • 请不要这样做两次!!删除此 Q/A 以支持较新的 Q/A,或进行编辑以改进!
  • 组合成一个怎么样,它们非常相似。在boost::python 论坛上抱怨文档很差。
  • 好的。我明天可以把它们结合起来。到美国东部时间来晚了。
  • 没问题,我很友好!晚安!

标签: python c++ visual-studio-2010 boost


【解决方案1】:

我在上面的失败中找到了答案,但我遇到了一个新问题(使用 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 运行。使用修改后的 lib 设置,链接器会找到正确的文件。这在使用 Python3.4 时会导致另一个链接问题(我将打开一个单独的帮助请求)。

作为一个实验,我通过将我的“config-user.jam”修改为:

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

然后程序成功链接,然后我可以运行 hello.py 程序(使用 python2.7)

3.4 的链接器问题看起来更糟糕,我在其他地方看到了围绕它的问题的 cmets。我也将尝试使用 Python 3.2(或任何“3”版本)来查看它是否有效。我不需要使用 3.4,但至少需要 Python3。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-12
    • 2010-11-11
    • 2014-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多