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

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

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

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航