C++ Boost 之Python(一个简单的例子)

翻译 2003年07月21日 08:15:00

c++boost.gif (8819 bytes)

一个简单的例子

假设我们有下面的C++ API需要暴露给Python:

#include <string>

namespace { // Avoid cluttering the global namespace.

  // A couple of simple C++ functions that we want to expose to Python.
  std::string greet() { return "hello, world"; }
  int square(int number) { return number * number; }
}

这就是要暴露API给Python的getting_started1模块的C++源代码.

#include <boost/python/class_builder.hpp>
namespace python = boost::python;

BOOST_PYTHON_MODULE_INIT(getting_started1)
{
  try
  {
    // Create an object representing this extension module.
    python::module_builder this_module("getting_started1");

    // Add regular functions to the module.
    this_module.def(greet, "greet");
    this_module.def(square, "square");
  }
  catch(...)
  {
    python::handle_exception(); // Deal with the exception for Python
  }
}

成了! 如果我们生成这个共享库并把它放到Python的搜索路径中去, 我们就能在Python中访问这些C++函数了.

>>> import getting_started1
>>> print getting_started1.greet()
hello, world
>>> number = 11
>>> print number, '*', number, '=', getting_started1.square(number)
11 * 11 = 121

Next: 导出类 Previous: 和其他系统的比较 Up: Top

© David Abrahams 2001 版权所有. 本文档允许复制、使用、修改、出售和分发,前提是这个版权声明必须出现在所有的拷贝上。本文档的提供不承担任何直接或隐含的保证,并且不做其适合任一目的之声明。

更新日期: 2000年5月6日

boost c++库学习实例

1、linux下载编译boost源码: ./bootstrap.sh sudo ./bjam --layout=versioned --build-type=complete  install  ...
  • earbao
  • earbao
  • 2013年12月18日 18:01
  • 1541

利用C++ Boost编写扩展Python模块

Python很强大,但已有的模块可能满足不了人民日益增长的物质文化需求,于是有时需要编写扩展模块进行完善。 可行的方案有很多:SWIG、Weave、ctypes、BOOST…… BOOST...
  • normallife
  • normallife
  • 2016年09月16日 17:40
  • 1727

利用Boost.Python实现Python C/C++混合编程

利用Boost.Python实现Python C/C++混合编程
  • xuluhui123
  • xuluhui123
  • 2017年04月28日 10:34
  • 2888

Python调用采用Boost Python封装的c++

上次我写了利用Python提供的API封装c函数,并调用。但是由于利用API的方式过于原始,对于类或者结构极度麻烦。因此,我选择了Boost的Python的来封装类,类似的工具还有SWIG等,选择Bo...
  • mao_kun
  • mao_kun
  • 2016年08月06日 23:11
  • 1533

关于boost.numpy的使用

最近的研究中,想使用python调用c++的编译后的dll。尝试了ctypes,但是发现ctypes对c语言编译的dll兼容性比较好,对c++封装的类就无能为力了。尝试了boost.python,发现...
  • shizhuoduao
  • shizhuoduao
  • 2017年03月28日 22:41
  • 923

利用boost.python封装C++函数供python调用

今天需要在python里调用一个c++函数,因此各种查资料,发现boost.python库的使用还是很简单的。在这总结一下,以供大家参考。 给大家几个链接,在这里提醒大家,很多资料由于时间久远,可能b...
  • Sunshine_in_Moon
  • Sunshine_in_Moon
  • 2016年04月11日 19:33
  • 3683

用boost封装C++的库供Python调用

用boost封装C++的库供Python调用测试环境 OS:Windows10 x64 Python2.7 x64:Anaconda2 4.3.1 Boost 1.63.0 x64 dll工程配置 添...
  • shizhuoduao
  • shizhuoduao
  • 2017年03月26日 18:38
  • 381

Boost.asio实现的同步、异步TCP通信的简单例子

每个asio程序都必须有io_server对象。对于服务端和客户端都需要socket对象,通过socket对象的成员函数进行连接和数据通信。服务端需要 acceptor对象来等待连接。下面的例子是用C...
  • zhongjiezheng
  • zhongjiezheng
  • 2015年03月19日 23:13
  • 2870

C++ 日志库 boost::log 以及 glog 的对比

C++ 日志库 boost::log 以及 glog 的对比
  • forfuture3513
  • forfuture3513
  • 2017年03月13日 19:52
  • 578

python学习—几个简单小程序

python初阶学习
  • lcr_happy
  • lcr_happy
  • 2016年12月28日 13:41
  • 11993
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++ Boost 之Python(一个简单的例子)
举报原因:
原因补充:

(最多只允许输入30个字)