C/C++与Python互相调用 (三)

2014-11-24 02:37:39 · 作者: · 浏览: 9
t n;
if (!PyArg_ParseTuple(args, "s", &command))//这句是把python的变量args转换成c的变量command
return NULL;
n = my_c_function(command);//调用c的函数
return Py_BuildValue("i", n);//把c的返回值n转换成python的对象
}
// 3 方法列表
static PyMethodDef MyCppMethods[] = {
//MyCppFun1是python中注册的函数名,wrap_my_c_fun是函数指针
{ "MyCppFun1", wrap_my_c_fun, METH_VARARGS, "Execute a shell command." },
{ NULL, NULL, 0, NULL }
};
// 4 模块初始化方法
PyMODINIT_FUNC initMyCppModule(void) {
//初始模块,把MyCppMethods初始到MyCppModule中
PyObject *m = Py_InitModule("MyCppModule", MyCppMethods);
if (m == NULL)
return;
}

mips-linux-gnu-g++ -EL -shared -fpic testso.cpp -o MyCppModule.so -L./lib -lpython2.7 -I./include/python2.7/


testso.py

[python]
# -*- coding: utf-8 -*-
import MyCppModule
#导入python的模块(也就是c的模块,注意so文件名是MyCppModule
r = MyCppModule.MyCppFun1("ls -l")
print r
print "OK"

# -*- coding: utf-8 -*-
import MyCppModule
#导入python的模块(也就是c的模块,注意so文件名是MyCppModule
r = MyCppModule.MyCppFun1("ls -l")
print r
print "OK" PS:PyModule_Create和Py_InitModule的区别:http://stackoverflow.com/questions/10509400/difference-between-pymodinit-func-and-pymodule-create