当前位置:   article > 正文

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

boost.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 中编写代码 

  1. #define BOOST_PYTHON_STATIC_LIB
  2. #include <boost/python.hpp>
  3. #include <iostream>
  4. // Function to print "hello world BOOST PYTHON"
  5. void hello()
  6. {
  7. std::cout<<"hello world BOOST PYTHON"<<std::endl;
  8. }
  9. // Boost Python module initialization
  10. BOOST_PYTHON_MODULE(Boost_Python_TEST)
  11. {
  12. // Expose the "hello" function to Python
  13. boost::python::def("hello", hello);
  14. }

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

  

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

  

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/555695
推荐阅读
相关标签
  

闽ICP备14008679号