博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python的C扩展
阅读量:2391 次
发布时间:2019-05-10

本文共 1571 字,大约阅读时间需要 5 分钟。

前提条件

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的代码,代码如下:

#include 
static 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啥好呢。。。哈哈。。。

转载于:https://my.oschina.net/sunlimpid/blog/137731

你可能感兴趣的文章
使用BlazeDS实现Java和Flex通信
查看>>
使用 Apache MINA 开发高性能网络应用程序
查看>>
五分钟学会使用spring-data-cassandra快速实现数据的访问
查看>>
Build self-healing distributed systems with Spring Cloud
查看>>
如何利用Spring Cloud构建起自我修复型分布式系统
查看>>
Java代码实现设置系统时间
查看>>
java -D参数简化加入多个jar
查看>>
用Erlang开发的文档数据库系统CouchDB
查看>>
Apache Commons工具集简介
查看>>
Apache Cayenne—辣椒你吃了吗?
查看>>
云应用开发工具:Spring Cloud 1.0 正式发布
查看>>
[转]在VC中使用智能指针操作Excel
查看>>
关于Linux命令行环境下无线网卡的配置
查看>>
C++的朋友,你都在用什么连数据库啊
查看>>
Setup Kubernetes on a Raspberry Pi Cluster easily the official way!
查看>>
Installing Kubernetes on Linux with kubeadm
查看>>
k8s-Building Large Clusters
查看>>
[转]stl 通用排序算法解析
查看>>
分布式存储系统GlusterFS初体验
查看>>
GlusterFS常用命令小结
查看>>