环境
笔者的环境是:
- Windows 11 64 bit
- Anaconda Python 3.9 64 bit
- Visual Studio 2022 Community Edition version 17.6.2 (msvc v14.3)
- Boost 1.82
下载并编译
下载
官网下载地址为 https://boostorg.jfrog.io/artifactory/main/release/1.82.0/source/,截至此博客发布时最新版本为1.82。笔者下载的版本是 boost_1_82_0.zip
下载并解压后,执行 booststrap.bat,会发现文件夹中多了一个 b2.exe,这是一个编译工具。接下来我们进入编译工作。
配置 user_config.jam
你可以在 \\tool\\build\\example\\user-config.jam
看到模板,将其做如下修改:
| |
如果你不确定你的 msvc 版本,可以参考 https://en.wikipedia.org/wiki/Microsoft_Visual_C++,using python 使用自己的配置。修改好后将文件复制到 C:\\users\\youUserName\\ 即可。
编译
我们通过命令行使用 b2.exe 进行编译,笔者使用的命令是
| |
b2部分命令行参数说明
--with后面接的是需要编译的库,而--with-python则说明只编译Boost::Python。install|stagestage即只生成库,而install还会生成include目录。通过--prefix="libPath"指定instalSl生成好的库的路径为"libPath"。如果是stage则由--stagedir=来指定。link即指定编译为动态库还是静态库 (.dll | .lib),shared即编译为动态库,static即为静态库,不填则默认编译为静态库。address-model指定是编译为32位还是64位。
编译完成后,可以在 \\bin\\lib64-msvc-14.3\\lib\\ 下看到四个文件,
| |
其中,python 和 numpy 各 2 个,带 gd 的对应 debug 版本,反之对应 release 版本。
配置Visual Studio
首先建立一个空项目,这一部分就不赘述了,然后打开项目属性:
在常规中给目标文件名取一个名字,并务必记住他。
在高级中将目标文件后缀名设置为 .pyd 。
配置包含目录,包含boost目录和python目录,我的配置是
1 2D:\\boost\\boost_1_82_0\\ D:\\Anaconda\\include\\
- 配置库目录,包含boost库目录和python库目录,我的配置是
1 2D:\\boost\\boost_1_82_0\\bin\\lib64-msvc-14.3\\lib\\ D:\\Anaconda\\libs\\




测试
编写 C++文件
不多说了,直接上文件!
| |
小提示
记得源代码要右键源代码然后添加啊不然就会像我一样以为没配置好环境一直再搞啊啊啊!!!

Python测试
如果你执行的是 release,进入目录 file2project\\x64\\release\\,否则进入 file2project\\x64\\debug\\,你能看到一个文件 Hello_Boost.pyd,这就是刚才的 C++ 源代码生成的 Python 模块。

我们 open in terminal,进入 Python,检测 import 及函数调用是否正常

如果到这一步都没有问题!那就应该没有问题了!写你的代码去吧!