C++与Python的结合示例

原创 2006年06月03日 04:20:00

序:
     本人刚接触Python两三天,这几天结合网上的教程,特写一个用C++扩展的Python编程示例,希望大家能喜欢。

本文关键字:Python,C/C++,Boost,STL

   本文使用了Boost中有关Python的部分,并着重介绍如何用C++写的函数或是类,并让Python能调用。先看我们设计好的C++函数和类。

#include <string>
#include <windows.h>

//定义一个函数
void msgbox(const std::string& str)
{
  MessageBox(0,str.c_str(),"msgbox",MB_OK);
}

//定义一个C++类
class Hello
 {
 public:

  std::string m_str;

 public:

  Hello()
  {
   MessageBox(0,"Called Hello:Hello()","Hello",MB_OK);
  }

  void SetMsg(const std::string & str)
  {
   m_str=str;
  }

  void ShowMsg()
  {
   MessageBox(0,m_str.c_str(),"Hello",MB_OK);
  }
 };

  要导出成Python能使用的类和函数模块,我们用boost中python模块来实现。

#include <boost/python.hpp>

BOOST_PYTHON_MODULE(pyTest)//这个pyTest即在Python中引用的模块名,用Import导入。并且和Dll的名称需要一模一样才行,扩展名可以由DLL自己保留。
{
 using namespace boost::python;
 
 //导出C++类,注意格式,还有里面有init后面,如果构造函数有参数,需要在这里面加入
 class_<Hello>("Hello",init<>())
  .def("SetMsg",&Hello::SetMsg)         //映射成员函数
  .def("ShowMsg",&Hello::ShowMsg)//映射成员函数
  ;

 //导出一个C函数,供调用
 def("msgbox", msgbox);        //映身函数
}

这里,还需要新建一个DLL工程,将这两个源码加入工程,编译成一个DLL。

以下是在Python中调用:
from pyTest import *

megbox('调用C函数,我是DLL中的函数')

h = Hello()
h.SetMsg('我是在脚本中被调用的')
h.ShowMsg()

用IDLE载入,并按F5,就可以执行脚本了。


版权声明:本文为博主原创文章,未经博主允许不得转载。

C++与Python的结合示例

本文使用了Boost中有关python的部分,并着重介绍如何用C++写的函数或是类,并让python能调用。先看我们设计好的C++函数和类。 #include #include //...
  • u014571355
  • u014571355
  • 2014年05月01日 15:21
  • 407

Python 与 C/C++ 交互的几种方式

python作为一门脚本语言,其好处是语法简单,很多东西都已经封装好了,直接拿过来用就行,所以实现同样一个功能,用Python写要比用C/C++代码量会少得多。但是优点也必然也伴随着缺点(这是肯定的,...
  • g6uqwseseo
  • g6uqwseseo
  • 2017年05月09日 10:04
  • 357

c++运算符与结合性

C++运算符与结合性 优先级 运算符 含义 结合方向 1 :: 域运算符 自左到右 2...
  • UPON_THE_YUN
  • UPON_THE_YUN
  • 2013年01月23日 22:15
  • 2782

C++ 右结合律与左结合律详解

运算符的结合性是指相同优先级的运算符在同一个表达式中,且没有括号的时候,运算符和操作数的结合方式,通常有从左到右结合和从右到左结合两种方式。      举个例子,假设~是一个运算符,又有表达式a~b...
  • misayaaaaa
  • misayaaaaa
  • 2017年04月02日 09:05
  • 1778

C/C++ 与lua混合使用入门讲的比较好的文章

转载一篇将C/C++ 与lua混合使用入门讲的比较好的文章 转自 http://www.open-open.com/home/space-6246-do-blog-id-1426.html ...
  • linuxheik
  • linuxheik
  • 2016年11月18日 16:35
  • 966

C++和Python混合编程 - C++写python扩展

早就听说过了对于复杂的系统一般会结合多种语言进行开发,最近摸索了下C++和Python混合编程,在此总结一下,做为笔记。 对于C++和python混合编程实际上包含两部分内容: 用C++写...
  • i7thTool
  • i7thTool
  • 2017年03月17日 16:39
  • 720

C++ 运算符的优先级和结合性

运算符的优先级和结合性 优先级 运算符 名称或含义 使用形式 结合方向 说明 1 后置++ 后置自增运算符 变量名++ 左到右 后置--...
  • lfb_2048
  • lfb_2048
  • 2017年03月14日 12:01
  • 2097

Python基础学习-MySQL与Python结合

一、MySQL 1、下载安装MySQL 5.0 2、mysql操作     cmd-> mysql -h 主机名 -u 用户名 -p-h : 该命令用于指定客户端所要登录的MySQL主机名, 登录...
  • dai_fun
  • dai_fun
  • 2015年11月19日 13:04
  • 1187

C++调Python示例

原文出自:http://www.cnblogs.com/Hisin/archive/2012/02/27/2370590.html
  • huangshanchun
  • huangshanchun
  • 2014年05月15日 15:33
  • 654

C++调用python:无参数,简单helloworld示例

运行环境:VS2015 + python3.4 总体步骤简单来说如下: 设置编译环境,其实就是设置Python的头文件和库文件目录以及一个很让人头疼的python3.4_d.lib问题 初始化Pyt...
  • sherrylml
  • sherrylml
  • 2015年10月26日 01:27
  • 1562
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++与Python的结合示例
举报原因:
原因补充:

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