前提条件
c编译器用DEV-C++,
python(sys.version):'2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)]'
一、新建DEV-C++的DLL工程
二、设置DEV工程属性
参考 文中的设置工程属性
三、生成python的C扩展“.pyd”文件
编写DLL的代码,代码如下:
#includestatic PyObject *Log( PyObject *self, PyObject *args ){ const char *s; if ( !PyArg_ParseTuple( args, "s", &s ) ) return NULL; return Py_BuildValue( "ss", "PydMath.Log log:", s );}static PyObject *Sub( PyObject *self, PyObject *args ){ int a, b; if ( !PyArg_ParseTuple( args, "ii", &a, &b ) ) return NULL; return Py_BuildValue( "i", a - b );}static PyObject *Add( PyObject *self, PyObject *args ){ int a, b, sum; if ( !PyArg_ParseTuple( args, "ii", &a, &b ) ) return NULL; return Py_BuildValue( "i", a + b );}static PyMethodDef PydMathMethod[] ={ { "Add", Add, METH_VARARGS, "Execute add operation." }, { "Sub", Sub, METH_VARARGS, "Execute sub operation." }, { "Log", Log, METH_VARARGS, "Execute log operation." }, { NULL, NULL, 0, NULL }};PyMODINIT_FUNC initPydMath( void ){ PyObject *m = Py_InitModule( "PydMath", PydMathMethod ); if (m == NULL) return;}
编译后生成“PydMath.dll”的文件,改名为 “PydMath.pyd”,这样python就可以import此扩展模块。import结果如下:
四、Python调用扩展测试
python测试代码如下:
import PydMathret = PydMath.Add( 2, 3 )print ret ret = PydMath.Sub( 2, 3 )print retret = PydMath.Log( "python" )print ret运行结果如下:
至此,python的扩展已完工,更多的python扩展内容可参考python的手册“Extending and Embedding”一章。
顺便提下,在写博文的时候chrome崩溃了,写的内容没保存,重启恢复页面后,所写的内容都在,让人心情大落大起呀,该说chrome啥好呢。。。哈哈。。。