python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Boost.Python配置使用

windows系统下Boost.Python的配置和使用方法(新手教学)

作者:河里捉条鱼

Boost.Python是Boost库的一部分,Boost库本身包含了许多其他有用的库,这篇文章主要介绍了windows系统下Boost.Python的配置和使用方法的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下

Boost.Python简介

Boost库是一个可移植、开源的C++库,它是由C++标准委员会库工作成员发起、维护。其目的是为C++程序员提供免费、同行审查的、可移植的程序库。Boost库可以与C++标准库完美共同工作,并且为其提供扩展功能。Boost由于其对跨平台的强调,对标准C++的强调,与编程平台无关。大部分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(老版本名) 部分命令参数说明

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

二、配置VS文件

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配置使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文