分类: LINUX
2010-07-22 22:35:58
以下内容不是适合python高手看,仅仅是为第一次看<c扩展python >引路.希望中国的孩子不要迷路.
看了很多人的
而且还给出了使用例子:
>>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运行环境下去调用就好了(淡黄区域标示处),不会到了这一步好要我给重复给出示例吧?