用C/C++编写Python扩展

  

#include <python.h>



//1.定义功能函数

int add( int a, int b )

{

	return a + b;

}



//2.定义包装函数

static PyObject* _add(PyObject *self, PyObject *args)

{

	//把输入的Python对象转换为C/C++能识别的数据



	int arg1, arg2;

	if( !PyArg_ParseTuple(args, "ii", &arg1, &arg2) )

		return NULL;



	//调用C/C++函数,得到结果



	int result = add(arg1, arg2);

	//把得到的结果包装成Python对象,并返回



	return (PyObject*)Py_BuildValue( "i", result );

}



//3.为模块添加PyMethodDef方法数组

static PyMethodDef func_methods[] = {

	{ "add", _add, METH_VARARGS },

	{ NULL, NULL }

};



//4.增加模块初始化函数InitModule

PyMODINIT_FUNC initPyExt (void)

{

	Py_InitModule("PyExt", func_methods);

}

使用方法:
1.编译源文件为PyExt.pyd
2.使用sys.path.append(“你的模块路径")添加模块搜索路径
3.test.py:  

  import sys
  sys.path.append(r"你的模块路径")

  import PyExt
  print( PyExt.add(100, 200) )




你可能感兴趣的:(python)