python下调用c语言代码

1)首先,创建一个.c文件,其大体内容如下:

   2 #include <Python.h>

 99 char * extract(char * path)                                                   //想要调用的函数
100 {
112     char * Q = (char * )malloc(3*sizeof(char));
           。

           。

           。
149     return Q;
150 }
151
152
153 PyObject* wrap_extract(PyObject* self, PyObject* args)           //与python的接口函数,python中实际上调用的是这个函数,由这个函数调用真正的函数
154 {
155       int n;
156       char * path,*result;
157       if (! PyArg_ParseTuple(args, "s:extract", &path))                //进行参数传递,把python中的参数转到c语言中
158                 return NULL;
159       result = extract(path);
160       return Py_BuildValue("s", result);
161 }
162
163 static PyMethodDef extractMethods[] =                            
164 {
165       {"extract", wrap_extract, METH_VARARGS, "by DChipNau"},
166       {NULL, NULL}
167 };
168
169 void initextract()                                                   //当import这个模块之后会调用这个函数。
170 {
171       PyObject* m;
172       m = Py_InitModule("extract", extractMethods);
173 }

 

2)然后使用如下命令进行编译:

gcc -fPIC extract.c -o extract.so -shared  -I/usr/include/python2.7 -I/usr/lib/python2.7/config

 

3)在python中调用方法如下:

import extract

string = extract.extract(str(out_file))

 

 

PS:参数传递时直接传递int数组真是相当难受

 

posted @ 2016-03-19 23:19  DChipNau  阅读(2983)  评论(0编辑  收藏  举报