zoukankan      html  css  js  c++  java
  • 编写python扩展

    代码:

    #include <Python.h>
    static PyObject *
    spam_system(PyObject *self, PyObject *args)
    {
        const char *command;
        int sts;
    
        if (!PyArg_ParseTuple(args, "s", &command))
            return NULL;
        sts = system(command);
        return PyLong_FromLong(sts);
    }
    
    static PyMethodDef SpamMethods[] = {
    {"system",  spam_system, METH_VARARGS,
    "Execute a shell command."},
    {NULL, NULL, 0, NULL}        /* Sentinel */
    };
    
    static struct PyModuleDef spammodule = {
        PyModuleDef_HEAD_INIT,
        "spam",   /* name of module */
        NULL, /* module documentation, may be NULL */
        -1,       /* size of per-interpreter state of the module,
                  or -1 if the module keeps state in global variables. */
        SpamMethods
    };
    
    PyMODINIT_FUNC
    PyInit_spam(void)
    {
        return PyModule_Create(&spammodule);
    }

    编译选项:

    releaee版

    dll名字必须为spam.pyd

    测试:

    >>> import spam
    >>> dir(spam)
    ['__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'system']
    >>> spam.system('dir')
    驱动器 G 中的卷是 ll6_za
    卷的序列号是 C0F5-30DE

    G: empConsoleApplication1Release 的目录

    2018/03/19 00:38 <DIR> .
    2018/03/19 00:38 <DIR> ..
    2018/03/19 00:36 746 ConsoleApplication1.exp
    2018/03/19 00:36 27,307 ConsoleApplication1.iobj
    2018/03/19 00:36 33,648 ConsoleApplication1.ipdb
    2018/03/19 00:36 1,942 ConsoleApplication1.lib
    2018/03/19 00:36 512,000 ConsoleApplication1.pdb

  • 相关阅读:
    汇编笔记(1) 寄存器
    阿里云RDS数据库备份文件恢复到本地数据库
    Java调用HTTPS接口的证书配置
    SQL面试题之行转列
    WebsiteCrawler
    supervisor
    简单学习github代码托管
    [egret+pomelo]实时对战游戏杂记(5)
    [egret+pomelo]实时游戏杂记(4)
    [egret+pomelo]实时游戏杂记(3)
  • 原文地址:https://www.cnblogs.com/cutepig/p/8598588.html
Copyright © 2011-2022 走看看