Windows下Boost.Python配置与使用完整教程

Chloe
Chloe
发布时间:2026-10-12 | 3人浏览过
原创

本文详细讲解在Windows环境下配置Boost.Python的全过程,涵盖从下载预编译包、生成b2工具、配置user-config.jam到使用MSVC 14.3编译静态库的完整步骤。同时包含Visual Studio项目属性设置、生成.pyd动态链接库文件以及Python端调用C++函数的完整代码示例与验证方法,帮助开发者实现C++代码向Python接口的无缝转换。

Boost.Python简介

Boost库是一个可移植、开源的C++库,由C++标准委员会库工作成员发起并维护,旨在为C++程序员提供免费、经过同行审查且可移植的程序库。Boost库能与C++标准库完美协同工作,并提供扩展功能。由于其强调跨平台兼容性与对标准C++的支持,Boost与具体编程平台无关。大多数Boost库功能仅需包含相应头文件即可使用,少数库(如正则表达式库、文件系统库等)则需要链接库文件。 Boost库是为C++标准库提供扩展的一系列C++程序库的总称。其中,Boost.Python是Boost库的一个子库,利用它可以轻松地将C++函数接口转换为Python接口。在大多数情况下,无需对原有C++代码进行任何修改,Boost.Python会自动对C++类进行封装,使其编译后的结果符合Python语言规范。

Boost.Python 安装配置

安装环境准备(包)

windows系统:Windows11-64bit
Python:3.12.2
GCC:gcc(GCC-MinGW)11.5.0
cmake:version-3.23.2
Msvc(visual Studio):14.3(2022版),14.2(2.19版)
Boost.Python:1.89.0(exe包-预编译版本)
==Boost.Python下载地址:==
1)https://sourceforge.net/projects/boost/
2)https://www.boost.org/releases/latest/

注意:以上包程序请按照顺序安装,否则会安装失败

一、Boost.Python安装

1、进入官网下载安装包

打开官网地址,下载预编译包boost_1_89_0-msvc-14.3-64.exe:

下载完成后点击打开,进入安装页面。开始会让你选择安装位置,未特殊要求默认即可,一直next:

安装完成后,打开终端,进入到boost.python安装目录下,运行bootstrap.bat文件:

命令:.\bootstrap.bat

执行结束后,会在当前目录下生成b2.exe文件。

2、创建user-config.jam文件

在进行Boost的编译以前我们需要定义Python的版本,默认下会自动搜索并使用$PATH中的路径。如果我们有多个版本的话,就需要指定我们用哪一个。

方法一:在该文件夹下(C:\local\boost_189_0)新建一个user-config.txt文件,并在里面加上:

using msvc : 14.3;
# 路径仅供参考
using python    : 3.12
        : "C:\Users\XXX\AppData\Local\Programs\Python\Python312\python.exe"
        : "C:\Users\XXX\AppData\Local\Programs\Python\Python312\include"
        : "C:\Users\XXX\AppData\Local\Programs\Python\Python312\libs";

其中using msvc:14.3指定编译器为msvc 14.3 即 vs 2022,如果是VS 2015 的话应填 using msvc:14.0。using python 则是指定Python版本及其路径,因为我用的是anaconda Python-3.12.2,所以第一处填3.12,第二处则是anaconda根目录下的Python.exe的目录地址。第三四处也都在anaconda根目录下,注意顺序和符号。切记版本号和路径填写自己的。保存user-config.txt文件后并将其后缀改为.jam,即user-config.jam。修改命令使用:ren方法二:进入目录:C:\local\boost_1_89_0\tools\build\example,找到文件:user-config.jam,复制一份到用户的目录下(例如:C:\Users\XXX\user-config.jam)即可。注意文件末尾的 python version 要改成当前使用的Python版本。我是这两个方法一起用了…

3、编译

以上处理保存后,在当前目录下(C:\local\boost_189_0)编译,命令:

.\b2 --with-python --prefix="D:\boost" install toolset=msvc-14.3 link=static threading=multi address-model=64

编译说明: Boost 库提供了强大的编译工具 b2.exe 和 bjam.exe ,其中 b2.exe 为新版本的编译工具,我们使用它来编译 Boost::Python 64 位静态库。在 boost_1_69_0 文件夹下打开命令行 ( Powershell 等),输入以下命令回车即可。

.\b2 --with-python --prefix="D:\boost" install toolset=msvc-14.3 runtime-link=shared link=static address-model=64

该指令会同时编译 Release 和 Dubug 版本,若要单独编译某一个版本,则可使用以下指令:

Release 版
.\b2 --with-python --prefix="D:\boost" install toolset=msvc-14.3 variant=release link=static address-model=64
Dubug 版
.\b2 --with-python --prefix="D:\boost" install toolset=msvc-14.3 variant=debug link=static address-model=64

注:由于还要复制各种头文件,所以总耗时大概 10 ~ 20 min。 b2 / bjam(老版本名) 部分命令参数说明

  • –with- | --without- --with- 后面接要编译的 Boost 的库名,如 --with-python 即仅编译 Boost::Python 库。相对的,–without-python 即为编译除 Boost::Python 之外全部库。如果要编译 ( 或不编译 ) 多个库的话,可用多条 with | without 语句来指定,缺省则为全部编译。
  • install | stage stage 即只生成库,而 install 还会生成 include 目录。通过 --prefix=“g:\boost” 指定 install 生成好的库的路径为 “g:\boost”。如果是 stage 则由 --stagedir= 来指定。
  • toolset 指定编译工具,此处我们指定为 msvc 14.1,即 VS 2017 的编译器
  • link 即指定编译为动态库还是静态库 ( .dll | .lib ),shared 即编译为动态库,static 即为静态库,不填则默认编译为静态库。一般而言静态库体积要大一些,但不用带 Boost::Python 的 DLL 文件,部署和使用也较为方便; 动态库的话相对体积较小(也小不了多少),但必须用带 Boost::Python 的 DLL 文件。选择静态库还是动态库这个得自己取舍。
  • address-model 指定编译为 32 位还是 64 位,我们指定 address-model=64 即编译为 64 位。
  • threading:单/多线程编译。默认多线程multi,一般都写多线程程序,当然要指定multi方式了;如果需要编写单线程程序,那么还需要编译单线程库,可以使用single方式。

如下没报错,就说明编辑完成:

二、配置VS文件

  • 打开VS 2022 并创建一个 C++ 空项目:HelloBoostPython,将工具栏那的改为 Release-x64。

  • 打开项目属性,即解决方案管理器中选择该项目右键→属性,在配置属性→常规中修改目标文件名为Hello_Boost,配置类型改为动态库(.dll),

  • 配置属性→高级:目标文件拓展名改为:.pyd

  • 配置属性→VC++目录:
    • 包含目录:目标环境下Python的include文件夹,上述b2编译生成路径中的include文件夹(也就是–prefix="D:\boost"制定地址下的目录\include\boost-1_69)
    C:\Users\XXX\AppData\Local\Programs\Python\Python312\include
    D:\boost\include\boost-1_89
    

    • 库目录:目标环境下Python的libs文件夹,上述b2编译生成路径中的lib文件夹(也就是–prefix=“D:\boost”)
    C:\Users\XXX\AppData\Local\Programs\Python\Python312\libs
    D:\boost\include\lib
    

5. 配置属性→连接器→常规,添加附加库目录(同库目录)

目标环境下Python的libs文件夹,上述b2编译生成路径中的lib文件夹(也就是–prefix=“D:\boost”) C:\Users\XXX\AppData\Local\Programs\Python\Python312\libs D:\boost\include\lib

所有设置完成后点击【应用】-【确定】。

三、添加main.app文件

在项目下添加main.app文件:项目下右击源文件→添加→新建项,输入文件名点击【确定】。

在文件中编写相应代码:

// File : main.cpp
// 不在 #include <boost/python/...> 之前加上下面的宏定义的话
// 编译器会默认使用 Boost::Python 的动态链接库
#define BOOST_PYTHON_STATIC_LIB

#include <boost/python/module.hpp>
#include <boost/python/def.hpp>


const char * hello_boost() {
    return "Hello Boost::Python!";
}

const char * hello_world() {
    return "Hello World!";
}


// 此处 Hello_Boost 应该与之前设置的目标文件扩展名一致

BOOST_PYTHON_MODULE( Hello_Boost ) {
    using namespace boost::python;
    def( "hello_boost", hello_boost );
    def( "hello_world", hello_world );
}

编写完成后点击编译,编译成功会生成对应的Hello_Boost.pyd文件,即Python的动态链接库文件,

可能还会遇到下面这个错误,忽略即可:

此时我们打开Windows系统终端,进入到Hello_Boost.pyd该文件路径下,可以看到生成的.pyd文件就在这里。

进入Python交互式命令窗口,使用import导入Hello_Boost库文件,并调用C文件中的函数,如果没报错就说明成功了,如下:

可参考链接:https://note.qidong.name/2018/01/hello-boost-python/

总结

到此这篇关于windows系统下Boost.Python的配置和使用方法的文章就介绍到这了,更多相关Boost.Python配置使用内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表