zoukankan      html  css  js  c++  java
  • 用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) )




  • 相关阅读:
    Yii2 composer报错处理
    bootstrap元素居中
    前端面试题
    control-lable的用法
    jenkins持续集成搭建
    gitlab管理平台搭建
    mysql8.0.11安装
    nexus私服搭建、配置、使用
    mysql5.7.22安装
    nginx配置阿里云免费ssl证书实现https化
  • 原文地址:https://www.cnblogs.com/LinuxHunter/p/2624053.html
Copyright © 2011-2022 走看看