• 技术文章 >常见问题 >Python常见问题

    python 如何调用cpp

     Ly Ly2020-06-12 16:18:08原创3297

    一、写一个cpp

    这个cpp的功能是 “加法器”,extern “C”的存在是因为python 的ctype可以调用C但是没有Cplustype~~~所以,~~~

    #include "/home/oujie/anaconda3/envs/pytorch-master/include/python3.7m/Python.h"
    #功能实现在这个函数中
    extern "C"
    int add_func(int a,int b)
    {
        return a+b;
    }
    #下面的这些是调用相关的API把数据格式进行转换,让python可以调用,这也是python的头文件里面的定义好的
    extern "C"
    static PyObject *_add_func(PyObject *self, PyObject *args)
    {
        int _a,_b;
        int res;
        if (!PyArg_ParseTuple(args, "ii", &_a, &_b))
            return NULL;
        res = add_func(_a, _b);
        return PyLong_FromLong(res);
    }
    extern "C"
    static PyMethodDef CppModuleMethods[] =
    {
        {
            "add_func",
            _add_func,
            METH_VARARGS,
            ""
        },
        {NULL, NULL, 0, NULL}
    };
    extern "C"
    PyMODINIT_FUNC initcpp_module(void)
    {
        (void) Py_InitModule("cpp_module", CppModuleMethods);
    }

    二、对上面的这个CPP编译

    #linux下面编译成so
    gcc -o add_demo.so -shared -fPIC add_demo.c
    #windows下编译成dll

    三、写一个python文件调用

    import ctypes
    dll=ctypes.cdll.LoadLibrary
    lib=dll("./add_demo.so")
    print("python call cpp so:")
    p=lib.add_func(2,3)
    print(p)
    专题推荐:python
    上一篇:python 如何键入 下一篇:python读取excel保存公式无法读取

    相关文章推荐

    • python 导出csv 中文乱码• python 如何键入

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网