利用Boost::Python实现C++调用python接口

2019年11月06日

阅读数:7

这篇文章主要向大家介绍利用Boost::Python实现C++调用python接口,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

Boost.Python能将C++的结构体暴露给Python使用。可是在运用Boost.Python时,却遇到一个难题,

一、在C++定义一个新的结构体struct A

二、将此结构体暴露给Python解释器

三、现在在工程中生成结构体A的对象,A a。

四、但愿将a传入Python解释器进行运算,运算的函数写在某py文件中。

一直没有办法解决,但愿大虾帮助解答。 python

这个问题就是在c++中调用py实现的接口函数。

相似c++代码

struct a

{

int a ;

int b;

};

a temp;

GetPythonFunc( & temp ); //调用python函数,参数为必定结构体的引用.

这个结构体用boost能够导出给python. 可是这个参数要怎么传递给python代码呢? ios

最后在python mailist找到答案 c++

--------------------------------------------------

#include

#include

using namespace boost::python;

class World

{

public:

void set(std::string msg) { this->msg = msg; }

std::string greet() { return msg; }

std::string msg;

};

typedef boost::shared_ptr world_ptr;

BOOST_PYTHON_MODULE(hello)

{

class_("World")

.def("greet", &World::greet)

.def("set", &World::set)

;

register_ptr_to_python();

}

int main(int argc, char *argv[])

{

Py_Initialize();

world_ptr worldObjectPtr (new World);

worldObjectPtr->set("Hello from C++!");

try {

inithello();

PyRun_SimpleString("import hello");

object module(handle<>(borrowed(PyImport_AddModule("__main__"))));

object dictionary = module.attr("__dict__");

dictionary["pyWorldObjectPtr"] = worldObjectPtr;

PyRun_SimpleString("pyWorldObjectPtr.set('Hello from Python!')");

} catch (error_already_set) {

PyErr_Print();

}

std::cout <greet(): " <greet() <<

std::endl;

Py_Finalize();

return 0;

}

--------------------------------------------------

Output:

worldObjectPtr->greet(): Hello from Python!

c++调用python接口作用是_利用Boost::Python实现C++调用python接口相关推荐

  1. python迷宫万花筒代码_利用广度优先遍历搜索迷宫的python源代码

    广度优先遍历简称为DFS,是数据结构中比较常用的一个算法,主要原理是采用队列先进先出的规则,一层一层的访问图的节点.而迷宫问题接近与遍历,但是不同于遍历,主要考虑是采用栈的形式标记路径,并对当前节点和 ...

  2. python自定义函数画图_利用Python绘图和可视化(长文慎入)

    Python有许多可视化工具,但是我主要讲解matplotlib(http://matplotlib.sourceforge.net).此外,还可以利用诸如d3.js(http://d3js.org/ ...

  3. python计算密集型提速_利用Cython加速计算密集型python任务

    何为计算密集型任务 下面贴上网上找到的描述计算密集型任务的特点是要进行大量的计算,消耗CPU资源,比如计算圆周率.对视频进行高清解码等等,全靠CPU的运算能力.这种计算密集型任务虽然也可以用多任务完成 ...

  4. python实现whois查询_利用Python实现域名查询和whois查询

    一.域名查询 万网提供了域名查询接口,接口采用HTTP协议:接口URL:http://panda.www.net.cn/cgi-bin/check.cgi接口参数:area_domain,接口参数值为 ...

  5. python分数类_利用标准库fractions模块让Python支持分数类型的方法详解

    前言 你可能不需要经常处理分数,但当你需要时,Python的Fraction类会给你很大的帮助.本文将给大家详细介绍关于利用标准库fractions模块让Python支持分数类型的相关内容,分享出来供 ...

  6. python catia catalog文件_利用CATIA知识工程和目录编辑器(Catalog Editor)

    载货汽车储气筒因为形状相似,可以利用知识工程的功能整理公司储气筒资源,实现批量设计,建立储气筒数据库.设计思路是首先利用创成式外形设计和零件设计模块建立参数化的零件模型,在建立模型的过程中要综合利用知 ...

  7. python提取视频字幕_利用Python提取视频中的字幕(文字识别)

    我的CSDN博客id:qq_39783601,昵称是糖潮丽子~辣丽 从今天开始我会陆续将数据分析师相关的知识点分享在这里,包括Python.机器学习.数据库等等. 今天来分享一个Python小项目! ...

  8. 用python进行股票数据分析_利用python进行股票数据分析

    个人觉得这问题问的不太对,说句不好的话,你是来搞编程的还是做股票的. 当然,如果题主只是用来搜集资料,看数据的话那还是可以操作一波的,至于python要怎么入门,个人下面会推荐一些入门级的书籍,通过这 ...

  9. 利用python进行数据分析数据_利用Python进行数据分析

    1.注释以及在Subplot上绘图 除标准的图表对象之外,你可能还希望绘制一些自定义的注释(比如文本.箭头或其他图形等). 注释可以通过text.arrow和annotate等函数进行添加.text可 ...

最新文章

  1. 如何修炼成某一领域的高手
  2. boost asio 简单示例
  3. 视频驱动V4L2子系统驱动架构 - ioctl
  4. dubbo web工程示例_带有Dubbo的Spring Cloud Alibaba
  5. 现在编程语言的两大主流
  6. C++11系列学习之三----array/valarray
  7. java线程池 锁_java多线程——锁
  8. DIV+CSS基础教程
  9. iptables防火墙工作原理及简单配置访问策略
  10. 网易博客挂了,转一篇以前的文章过来纪念一下吧。。
  11. xpath 取标签下所有文字内容_如何理解葡萄酒标签上的所有内容(下)
  12. [转载]利用TTL值来鉴别操作系统
  13. sciencesoftware科学软件
  14. 【JY】ABAQUS混凝土CDP插件分享
  15. win10访问不了win7文件服务器,win7系统无法访问win10系统的共享文件的解决方法
  16. 机房冷风吹-linux基础环境搭建(基础篇)
  17. CSS中强大的EM(转)
  18. Vcenter无法登录,“根证书错误”,“签名证书无效”
  19. Mathmatica多项式带余除法代码
  20. 刘林仙《薛仁贵征东》 《薛丁山征西》整理

热门文章

  1. oracle中dbms_并发和由于DBMS中的并发导致的问题
  2. 2万字,看完这篇才敢说自己真的懂线程池!
  3. JDK15正式发布,新增功能预览!
  4. Python爬虫淘宝商品详情页价格、类似数据
  5. Oracle数据库版本维护支持结束时间表以及数据库版本发行时间表
  6. python远程登录并执行命令_Python - 远程SSH执行命令
  7. wget抓取网站, 模拟手机端抓取
  8. oracle中 start with,Oracle中connect by...start with...的使用
  9. java 字符串实例_Java字符串实例
  10. 计算机专业410分能上哪些大学,2021年高考410分能报什么学校