实战构建Python和C++混合系统
关于C++和Python之间互相调用的问题,可以查找到很多资料。本文将主要从解决实际问题的角度看如何构建一个Python和C++混合系统。
力为 2009
一、概念
混合系统:采用多种语言构建的系统。比如Native C++和dotNet的混合系统,Python/Lua和C++的混合系统。
Python和C++各有各的优缺点,构建两者混合系统的主要目的就是利用Python的灵活性和C++高效性,增加程序的扩展性。当然还有其他好处,此处就不展开谈了。脚本语言有很多,至于为什么不采用其他的(如Lua、Ruby等),这里也不考虑。脚本语言的采用主要是个人喜好的问题。采用Lua可以查到很多资料,以前也曾用LuaBind实现过。
二、系统架构
混合系统可以简化成如下模型:
系统的运行过程为:
首先在应用程序中嵌入脚本语言解析器,然后用脚本语言提供的C/C++ API封装已有的C++功能库,再用脚本调用封装的服务。此后,应用层便可以执行脚本里的内容,其效果与应用层直接调用服务层类似。
三、实现
本例中采用脚本语言Python,因此主要工作为在应用层嵌入Python解析器,用Python封装服务层。为了说明问题,应用层的实现为PythonConsole.ex,服务层的实现为Mythma.dll,封装层为MythmaPy.dll。
1、假定Mythma.dll中的一个类为CHelloWorld:
class MythmaAPI CHelloWorld
{
public:
CHelloWorld(void);
~CHelloWorld(void);
void SetId(int nId) { m_Id = nId;}
int GetId() const { return m_Id; }
private:
int m_Id;
};
2、现在用Boost.Python封装该类:
#include "HelloWorld.h"
#include <boost/python.hpp>
using namespace boost::python;
BOOST_PYTHON_MODULE(My
相关文档:
http://hi.baidu.com/guzhilei1986/blog/item/8969b4debe99e150ccbf1ae7.html
函数 描述
int(x [,base ]) ......
最近对python产生了兴趣,于是从网上下载了基本PYTHON的书和文档,开始了PYTHON的学习,发现PYTHON中的list对象的功能实在是非常强大,编程起来比其他的程序语言对列表的操作要方便的多。
在python中定义一个列表只需要如下语句
li = ["a","b","c","d"]
list有许多的函数可以用来进行对列表的操作,如extend,append,inse ......
djangoproject python 3 prog python code http://wiki.python.org/moin/WebBrowserProgramming http://wiki.woodpecker.org.cn/moin/ http://www.okpython.com/viewlist-fid-5.html http://zh.wikipedia.org/wiki/CPython django doc douban ibm python doc ibm python zope http://www.czug.org/ http://www.apolov ......