如何在Windows平台上扩展Python

ZDNet软件频道 时间:2003-08-11 作者:ZDNet China |  我要评论()
本文关键词:
Python有许多优良特性,我最喜欢的就是它的易扩展性。如果你想写一个Python的C扩展,那么某些C++库使得创建Python扩展几乎就像写一个C++类那么简单。你还可以用Delphi写扩展。你甚至能够直接使用DLL中的C函数并使用用各种语言来编写的COM组件。
本文译自Builder.com,未经许可请勿转载Python有许多优良特性,我最喜欢的就是它的易扩展性。如果你想写一个Python的C扩展,那么某些C++库使得创建Python扩展几乎就像写一个C++类那么简单。你还可以用Delphi写扩展。你甚至能够直接使用DLL中的C函数并使用用各种语言来编写的COM组件。我们在本文中重点讨论后两种方法。

注意:在后面的讨论中我们假定你已经安装了Python。如果你没有,请上ActiveState网站并下载2.1.1、2.1.3或者2.2.1发行版。这些版本含有完整的COM支持。

使用C DLL

首先,你会想得到CallDLL。你可以下载源代码并编译它,或者如果你安装了ActiveState发布的Python,你可以使用PPM来得到它。对DynWin也同样如此。

我已经让这个压缩文件包括了一个简单的DLL。这个DLL提供了一个叫着ShowMsg的函数,该函数显示一个弹出式消息框。这个函数有如下标示:

    extern "C" {
        __declspec( dllexport ) void MsgBox(const char *msg);
    }

需要注意的是“extern “C””。这个函数名字不可以损坏,因此你要么直接使用C要么用“extern “C””来申明这个函数。

下面是使用这个函数的Python代码:

from dynwin.windll import *
mod = module('TestDLL')
buf = cstring("test")
mod.MsgBox(buf)

上面Python代码的关键之处是cstring行。它接受Python字符串并把它转换成指向字符缓冲区的指针。用这种方法来扩展Python的缺点是失去了Python优良的错误处理能力(例如例外),其好处是其它编程语言(例如Delphi)可以使用这个扩展,此外,它在某种程度上来说也是跨平台的。


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134