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

  • 相关阅读:
    「开始,DP专题」
    ZOJ3612 Median treap
    [HNOI2004]宠物收养所 treap
    SIRO Challenge 状态压缩 + DP 未解
    SPOJ3273 Order statistic set treap模板
    HNU2[I题]Omar Loves Candies 贪心
    HNU1[B题] DP,数位DP
    HNU1[F题] 栈模拟计算
    Node.js权威指南 (6)
    瘦下来之后你会遇见不一样的自己
  • 原文地址:https://www.cnblogs.com/cutepig/p/8598588.html
Copyright © 2011-2022 走看看