• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
LinuxHunter
原创+技巧=无坚不摧
博客园    首页    新随笔    联系   管理    订阅  订阅
用C/C++编写Python扩展
用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) )




posted on 2012-08-05 18:06  LinuxHunter  阅读(1467)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3