PYTHON 与C相互交互调用实例解析

类别:编程语言 点击:0 评论:0 推荐:
 

PYTHON 与C相互交互调用实例解析

 

使用前工具:

Vc++编译器

Python 解释器

如没有装VC,可以去微软网站下一个C++的编译器,地址如下:

http://download.microsoft.com/download/3/9/b/39bac755-0a1e-4d0b-b72c-3a158b7444c4/VCToolkitSetup.exe

 

装完后,在环境变量中把PYTHON的INCLUDE和LIBS分别加入下面2个宏

INCLUDE

LIB

 

1、C中调用PYTHON

#include <Python.h>

int main(int argc, char *argv[])

{

Py_Initialize();

PyRun_SimpleString("from time import time,ctime\n"

"print 'Today is',ctime(time())\n");

Py_Finalize();

return 0;

}

直接用CL 文件名  编译就是

 

2、用C生成DLL,用PYTHON调用

C代码:如FOO.C

#include <Python.h>

/* 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);

}

C定义文件:foo.def

EXPORTS

initfoo

编译生成foo.dll

Cl -c foo.c;

link foo.obj /dll /def:foo.def /OUT:foo.dll

在PYTHON中调用:

Import foo

Dir(foo)

即可以看到结果:

>>> import foo

>>> dir(foo)

['__doc__', '__file__', '__name__', 'bar']

>>> ^Z

 

 

 

(注:文章然简单,但很适合初学者,还请笑纳 :) )

本文地址:http://com.8s8s.com/it/it25778.htm