C++ 如何调用 通过Boost.python 封装的python函数(安装与配置注意事项)

一.下载好相匹配的版本python与boost :

         1.建议使用新版的比较方便,也没有太多的bug。 

        2.我使用的Boost 库是1.82.0   点击下载 Boost 1.82.0 。

        3.使用的是python 3.10.11版本   点击下载 python 3.10.11  。

       4. boost 1.82.0 版本不能用高于310的python 去编译,如果用的其他版本需要自己去查相对于的版本。

        5.我之前使用过Boost.1.69.0版本这个版本不能用高于3.9 的版本,因为3.9+ 里面放弃了某个函数,可以使用3.8.0的版本,但是安装的时候需要选择自定义安装,最后一步勾选上二进制调试,不然你vs 选用Debug编译的时候会出现少一个   xxxx_d.ib  的库文件。

 二.开始编译BOOST 库:

        1.使用VS2022 的   Developer command prompt (开发者命令提示符)工具 cd  到你下载的

Boost 目录下,然后运行 bootstrap.bat 文件会自动生成b2.exe  文件,新版的没有bjam.exe文件了,boost.python  被集成在b2 里面去了。  

  

        2.运行 b2.exe编译生成boost 库  

.\b2 install --toolset=msvc-14.3 --with-python --prefix="D:\Visual Stadio_2022\Boost" link=static runtime-link=shared threading=multi address-model=64

        --toolset=msvc-14.3  这个vs 编译版本  2022 是14.3,2019是14.2 ,2017是14.1 。

        --with-python   编译python 相关的模块 。

         --prefix=" "  这个生成的Boost.python 库存放的文件位置。

        runtime-link=shared   是指打包生成为动态库。

        threading=multi  多线程编译。

        address-model=64    x64  。

        编译好了如下,不会出现什么错误就ok 了

三.配置vs文件

        1.配置C/C++  中的包含路径,要包含boost 的库目录和python 的库目录。注意包含的级数,boost 需要包含到boost-1_82

          

        2.配置链接器 的附加库目录,此处python 只需要包含libs  也就是动态库的路径。python 的安装路径一般在这个地方。

  

  

        3.修改为动态生成文件

  

        4.修改目标扩展名

  

四.vs 中编写代码 

#define BOOST_PYTHON_STATIC_LIB

#include <boost/python.hpp>
#include <iostream>

// Function to print "hello world BOOST PYTHON"
void hello()
{
    std::cout<<"hello world BOOST PYTHON"<<std::endl;
}

// Boost Python module initialization
BOOST_PYTHON_MODULE(Boost_Python_TEST)
{
    // Expose the "hello" function to Python
    boost::python::def("hello", hello);
}

        1.打开生成的.pyd文件  (注意:如何项目名称跟宏BOOST_PYTHON_MODULE()中的名称不一致一定要修改为相同名字,不然你会一直显示import  不成功, 我在这地方被坑了2天!!!!)

  

      2. 现在到了检验是否正确的时候了,直接在本路径下cmd->然后输入 python->  import Boost_Python_TEST  ->  Boost_Python_TEST.hello()   查看输入正确就搞定了。

  

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,你需要安装BoostPython以及Boost.Python库。然后,按照以下步骤操作: 1. 编写C++代码并使用Boost.Python库将其封装Python模块。 例如,以下是一个简单的C++代码示例: ```c++ #include <boost/python.hpp> char const* greet() { return "Hello, world!"; } BOOST_PYTHON_MODULE(example) { using namespace boost::python; def("greet", greet); } ``` 这个代码定义了一个名为"greet"的函数,返回一个字符串,然后使用Boost.Python库将其封装Python模块。 2. 使用CMake创建项目并将其编译为pyd文件。 为了编译生成pyd文件,你需要使用CMake来创建项目,使用BoostPython的头文件和库文件,并将C++代码编译为pyd文件。 以下是一个CMakeLists.txt文件示例: ```cmake cmake_minimum_required(VERSION 3.0) project(example) find_package(Boost REQUIRED COMPONENTS python) find_package(PythonLibs REQUIRED) include_directories(${Boost_INCLUDE_DIRS} ${PYTHON_INCLUDE_DIRS}) link_directories(${Boost_LIBRARY_DIRS}) add_library(example SHARED example.cpp) target_link_libraries(example ${Boost_LIBRARIES} ${PYTHON_LIBRARIES}) set_target_properties(example PROPERTIES SUFFIX ".pyd") ``` 这个文件指定了编译项目所需的BoostPython库,将C++代码编译为pyd文件,并设置pyd文件的后缀名为".pyd"。 3. 编译并生成pyd文件。 使用以下命令编译项目: ``` cmake . make ``` 这将生成名为"example.pyd"的文件,可以在Windows上使用Python调用。 注意:在Windows上,你需要将Boost库和Python库添加到PATH环境变量中,或者将它们复制到生成的pyd文件所在的目录中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值