Chinaunix首页 | 论坛 | 博客
  • 博客访问: 169665
  • 博文数量: 51
  • 博客积分: 2302
  • 博客等级: 大尉
  • 技术积分: 420
  • 用 户 组: 普通用户
  • 注册时间: 2009-01-12 17:47
文章分类

全部博文(51)

文章存档

2010年(6)

2009年(45)

分类: LINUX

2010-07-22 22:35:58

以下内容不是适合python高手看,仅仅是为第一次看<c扩展python >引路.希望中国的孩子不要迷路.

    看了很多人的,写的非常的精彩.可是却少了实际操作.这些人,都把我们当成了c高手来对待.在编译的时候仅仅是一笔带过.说什么把模块编译连接 之后就可以使用.他却不知道我是那么的菜.

    而且还给出了使用例子:

    >>import foo

    >>foo.bar( '11111' )

    5

    如果觉得自己已经了解了如何编译成python可以使用的东西,那么就不浪费你的宝贵的时间看下去了,而是给我投以鄙视的目光:这么简单的问题,还那来说.

    下面给出例子:在我的linux板块下有.

 

  /*foomain.c*/

#include
/* Define the method table. */
static PyObject *foo_bar(PyObject *self, PyObject *args);
static PyMethodDef FooMethods[] = {
   {"bar",  foo_bar, METH_VARARGS},
   {NULL, NULL}
};
/* Here's the initialization function.  We don't need to do anything
 *    for our own needs, but Python needs that method table. */
void initfoo()
{
   (void) Py_InitModule("foo", FooMethods);
}
/* Finally, let's do something ... involved ... as an example function. */
static PyObject *foo_bar(PyObject *self, PyObject *args)
{
   char *string;
   int   len;
   if (!PyArg_ParseTuple(args, "s", &string))
       return NULL;
   len = strlen(string);
   return Py_BuildValue("i", len);
}

 

在linux下的运行: gcc -fPIC -shared -o foo.so foomain.c 这一段就ok了.

当前目录下会出现"foo.so"文件.这就是我们一直不明白那些作者说的东西.

现在在到前面python运行环境下去调用就好了(淡黄区域标示处),不会到了这一步好要我给重复给出示例吧?

阅读(720) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~