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

2023-11-02

一.下载好相匹配的版本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()   查看输入正确就搞定了。

  

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 语言混合:模型和视图

    考虑开发一个应用程序 其中模型将使用 C 使用 Boost 编写 视图将使用 Objective C 使用 Cocoa Touch 编写 哪里有一些示例展示了如何集成 C 和 Objective C 来开发 iPhone 应用程序 直接从源
  • Dapper 强类型查询返回默认对象值

    刚刚开始使用 Dapper 并喜欢它 我遇到了问题 它返回正确数量的对象 但它们的属性都有默认值 using var dbConnection Connection await dbConnection OpenAsync const st
  • .NET Windows 服务中调用 C# 的 wait 的 I/O 回调是否可以不阻塞?

    我知道在 ASP NET 中 当使用 wait 时工作线程会返回到池中 而 I O 发生在后台 这对于可扩展性非常有用 我的 Windows 服务是一个套接字服务器 它使用 Begin End 样式的异步套接字 I O 混合我的魔法 我知道
  • 从 .Net 将简单数据插入 Excel 文件的最简单方法

    我有一个 Excel 文件 大约有 10 列和 1 20 行 我需要插入 1 20 行包含各种数据元素 我想知道是否有一种方法可以将一些标签放入 Excel 文件中 以便可以找到并替换它们 将列标记为 名称 的东西 这样我就可以在代码中说
  • 禁用除滚动之外的 DataGridView

    我如何配置 datagridview 以便用户只能在行中移动并使用滚动 而没有其他 如果我禁用网格不允许我使用滚动 将您的 datagridview 设置为只读 这将禁用任何编辑 dataGridView1 ReadOnly true 在你
  • 将占位符文本添加到文本框

    我正在寻找一种将占位符文本添加到文本框的方法 就像在 html5 中使用文本框一样 IE 如果文本框没有文本 则会添加文本Enter some text here 当用户单击它时 占位符文本消失并允许用户输入自己的文本 如果文本框失去焦点并
  • CMake 警告:无法为目标生成安全的链接器搜索路径

    在为 pcl 项目运行 CMake 时 我收到一条警告消息 Configuring done CMake Warning at CMakeLists txt 12 add executable Cannot generate a safe
  • C++ 模板参数类型推断

    我有一个这样的C 模板 template
  • 首先EntityFramework数据库 - 类型映射 - 将binary(8)从SQL映射到C#中的int

    在 SQL 内部 我有一个主键为二进制 8 的表 当我使用该表添加到我的模型中时Update Model from Database我可以看到该列有 type Binary 在 C 中 我将该列设为byte 我可以将该列映射到 int 吗
  • Type_traits *_v 变量模板实用程序顺序无法编译

    看过了这个答案 https stackoverflow com a 31763111 7151494 我试图想出一个变量模板从中获取代码的实用程序 template
  • 使用 Microsoft Graph 创建用户

    如何使用 Microsoft graph 创建用户 因为我在保存过程中遇到了权限失败的问题 我确实有几个问题 在图中调用创建用户 API 将在哪里创建用户 是在 Azure AD 还是其他地方 我尝试通过传递 json 和必需的标头来调用创
  • C++ 析构函数:何时释放内存?

    如果我删除一个导致其析构函数被调用的对象 那么内存是在析构函数完成函数中的任何操作之前还是之后被释放 仅当最小派生类子对象被销毁后才会释放内存 所以如果你有 class Base class Derived public Base publ
  • IClaimsTransformation 未触发

    我尝试过实施一个IClaimsTransformation我在 ASP NET CORE 3 1 Web 应用程序中找到的类 public class ClaimsTransformer IClaimsTransformation publ
  • 为什么在 .net 中使用 Invoke on Controls? [复制]

    这个问题在这里已经有答案了 可能的重复 为什么 NET不允许跨线程操作 https stackoverflow com questions 2896504 why net does not allow cross thread operat
  • 如何使用 C# 代码使用超链接的 onClick 事件?

    我正在尝试为页面中的超链接添加条件 而不是仅仅使用特定的链接 例如 a href help Tutorial html Tutorial a 我想为不同的用户显示不同的页面 例如 如果用户以管理员身份登录 他们将看到与普通用户不同的链接 我
  • 在 C# 中生成随机值

    如何使用以下命令生成随机 Int64 和 UInt64 值RandomC 中的类 这应该可以解决问题 这是一个扩展方法 因此您可以像调用普通方法一样调用它Next or NextDouble上的方法Random目的 public stati
  • IEnumerable.比带中断的 for 循环更快吗?

    我们的代码打开表单时遇到了一些缓慢的情况 这可能是由于for循环与break这需要很长时间才能执行 我把它切换到IEnumerable Any 并看到表格很快打开 我现在试图弄清楚是否单独进行此更改会提高性能 或者是否正在访问Product
  • 语义问题 Qt Creator:命名空间“std”中没有名为“cout”的成员

    我开始使用 Qt Creator 编写代码 对于 C 文件 我遇到很多语义问题 99 是 命名空间 yyy 中没有名为 xxx 的成员cpp文件构建 编译和输出没有问题 如果我点击例如cout 我已链接到 iostream 我是否需要在 Q
  • 停止 TcpListener 的正确方法

    我目前正在使用 TcpListener 来处理传入连接 每个连接都有一个线程用于处理通信 然后关闭该单个连接 代码如下 TcpListener listener new TcpListener IPAddress Any Port Syst
  • 统一;随机物体移动[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在制作一款机器人战斗游戏 我希望敌人随机移动 然后有时会向敌人移动 我希望运动包含在其中的代码 else if avoid fal

随机推荐

  • windows软件或程序服务开机自启动的四种方式

    目录 方式一 1 脚本类型1 放入原脚本的快捷方式 脚本类型的 2 脚本类型2 自己写脚本 指向原服务路径 服务或软件类型的 方式二 添加任务计划方式 1 打开计算机管理 2 创建任务 添加任务名称和描述 根据需要随便填写 3 新建触发任务
  • 简单几何图形的识别与标记(opencv)

    一 实现目标 手绘简单几何图形 拍照后处理可识别并标记图形相应关键点 直线 识别并标记始末点 三角形 识别并标记三个角点 矩形 识别并标记四个角点 二 实现流程 通过Python与OpenCV进行编程 采用了获取图形角点数量的方式来识别图形
  • 3-1 客户评级

    某电商要对平台上客户进行评级 按客户的月平均消费情况进行评级 规则如下 输入年度的消费额 根据上表的月平均消费情况输出相应的 数 输入格式 输入年度消费额 输出格式 相应的 数 输入样例 在这里给出一组输入 例如 25000 输出样例 在这
  • nginx热备配置

    nginx热备是指主服务器发生宕机 或者其他原因导致服务不可用时启用备用服务器继续提供服务 下面来看看nginx是怎么配置的 upstream backend server 127 0 0 1 9001 主服务器 server 127 0
  • Ubuntu18.04 LTS下安装Clang

    Ubuntu18 04 LTS下安装Clang 一 在新系统后Ubuntu18 04 LTS下安装Clang会出现依赖缺失的问题 但一步步安装之后依旧是缺失依赖无法安装 正在读取软件包列表 完成 正在分析软件包的依赖关系树 正在读取状态信息
  • 【ML】介绍 PandasAI:生成式 AI Python 库

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • pm2查看、重启服务和日志

    简单科普 SSH 是一种网络协议 用于计算机之间的加密登录 PM2 是一个守护进程管理器 它将帮助您管理和保持应用程序在线 1 ssh远程登录 ssh hostAddress 通过输入密码 成功会登录到对应主机 如果失败会被拒绝 2 pm2
  • CSS基础学习--25 border(边框)进阶

    一 边框常见属性 border radius box shadow border image 属性 说明 CSS border image 设置所有边框图像的速记属性 3 border radius 一个用于设置所有四个边框 半径属性的速记
  • 15【背景 渐变色】

    26 背景 26 1 背景颜色 background color 属性定义了元素的背景颜色 background color 颜色值 一般情况下元素背景颜色默认值是 transparent 透明 我们也可以手动指定背景颜色为透明色 back
  • 如何做出领导满意的测试报告?Parasoft自动化软件测试数据管理了解一下

    大家在做自动化测试时是如何管理测试数据的呢 测试情况是如何实时把控的呢 对于领导来说 需要的是一份报告 而对于开发测试人员 这份数据报告的内容和形式就非常重要 这里为大家介绍一款专门针对代码级开发测试的数据管理平台 Parasoft DTP
  • HCIP笔记

    HCIP笔记 IERS OSPF协议基础 基于HCIA笔记 链路状态路由协议 OSPF的一些补充 RIP的不足 RIP是基于距离矢量算法的路由协议 RIP协议的组播地址为224 0 0 9 存在收敛速度慢 度量值不科学 扩展性差问题 互联网
  • 物联网毕设分享 火灾报警系统设计与实现

    文章目录 1 简介 2 绪论 2 1 课题背景与目的 3 烟雾传感器介绍 3 1 类型 3 2 MQ系列传感器介绍 3 3 模块介绍 4 系统设计 4 1 自诊断故障报警功能 4 2 烟雾浓度显示 4 3 烟雾报警功能 4 4 防止报警器误
  • 性能测试的方法及步骤

    一 测试方向 总体方向 性能效率测试是通过站在用户体验的角度 使用专业的负载生成设备 在性能模型的基础上验证系统是否能够达到用户提出的性能指标 是否符合用户文档中对系统设计时的性能关注点 在系统正常交互量及峰值交互量的情况下发现系统中存在的
  • Python基础:按位异或 ^ ,按位或

    前言 文的文字及图片来源于网络 仅供学习 交流使用 不具有任何商业用途 版权归原作者所有 如有问题请及时联系我们以作处理 PS 如有需要Python学习资料的小伙伴可以加点击下方链接自行获取http t cn A6Zvjdun 使用按位异或
  • JDK8 JVM参数与实际环境中的优化配置实践

    如何配置我们的JVM呢 首先我们需要知道JVM的参数有哪些 然后根据这些参数的意义去分析自己的程序的JVM需要的配置 可以事先做一些尝试 再逐步调优 这个调优也是一个过程 没有足够的经验而做到一步到位是一件很困难的事情 事情是一点点做的 不
  • 关于内存的编程题,对异常: 0xC0000005 的分析以及解决办法

    一 内存的思考题 请问运行Test函数会有什么样的结果 第一题 void GetMemory char p p char malloc 100 void Test void char str NULL GetMemory str strcp
  • Node.js到底是个啥?干什么用的?优缺点是什么?

    Nodejs简介 Node js是一个Javascript运行环境 runtime 是一个可以快速构建网络服务及应用的平台 是用Javascript语言构建的服务平台 可用于后端建立服务器 Node js与Javascript的区别 nod
  • error: cannot call member function ‘void me::sendMessage()‘ without object

    error cannot call member function void me sendMessage without object 原因分析 解决方案 原因分析 在connect中 传递函数地址不用带括号 参考函数指针的赋值 incl
  • 将tensorflow模型部署到服务器上

    基本思路 利用tensorflow官方提供的tensorflow serving进行部署 同时 为了免去环境配置等麻烦操作 可借助docker容器 一 服务器环境选择 首先肯定要去租一个服务器 例如阿里云 一开始选了window serve
  • C++ 如何调用 通过Boost.python 封装的python函数(安装与配置注意事项)

    一 下载好相匹配的版本python与boost 1 建议使用新版的比较方便 也没有太多的bug 2 我使用的Boost 库是1 82 0 点击下载 Boost 1 82 0 3 使用的是python 3 10 11版本 点击下载 pytho