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

    python 如何调用cpp

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

    一、写一个cpp

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

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    #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编译

    1

    2

    3

    #linux下面编译成so

    gcc -o add_demo.so -shared -fPIC add_demo.c

    #windows下编译成dll

    三、写一个python文件调用

    1

    2

    3

    4

    5

    6

    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学习网