python下调用c语言代码

Posted DChipNau

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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数组真是相当难受

 

以上是关于python下调用c语言代码的主要内容,如果未能解决你的问题,请参考以下文章

『Python CoolBook』C扩展库_其六_从C语言中调用Python代码

python C语言扩展之简单扩展-使用ctypes访问C代码

从其他语言(如 Java、PHP、Perl、Python 等)调用 C/C++ 代码的最佳方法是啥?

如何让python调用C和C++代码

如何让python调用C和C++代码

c语言主函数部分编辑时能不能顶格写?