zoukankan      html  css  js  c++  java
  • C语言程序转换为Python语言

    python语言是支持用c来它写模块的,其实现有的很多模块也是用c写的。这里我做个简单的介绍。

    先决条件:
    1.在linux上编写,需要自己编译出python的动态连接库。也就是要有libpython2.5.so这样的东西。
    2.在windows上,则需要mingw这个编译环境。其实只要你安装了Dev-Cpp就有了。当然还安装了windows版的python.

    一、先把源代码帖上来,很简单,假设保存为 hello.c

    #include <Python.h>
    
    static PyObject *
    hello_echo(PyObject *self, PyObject *args, PyObject *keywds)
    { 
    char *something;
    
    if (!PyArg_ParseTuple(args, "s", &something))
    return NULL;
    
    printf("%s
    ", something);
    Py_INCREF(Py_None);
    return Py_None;
    }
    
    static PyMethodDef hello_methods[] = {
    {"echo", (PyCFunction)hello_echo, METH_VARARGS | METH_KEYWORDS, "print string"},
    {NULL, NULL, 0, NULL}
    };
    
    void
    inithello(void)
    {
    Py_InitModule("hello", hello_methods);
    }

    二、先说说在linux怎么编译它:
    很简单,只需要一个命令,

    gcc -shared -fPIC hello.c -I/usr/include/python2.5/ -L/usr/lib -lpython2.5 -o hello.so

    就可以生成 hello.so 。注意这里-I/usr/include/python2.5/ 是python的头文件路径,有可能你的在-I/usr/local/include/python2.5/,

    -L/usr/lib 是python的libpython2.5.so在哪里,有可能你的在-L/usr/local/lib,这个都根据实际情况。
    来测试测试,在hello.so的当前路径下:

    [zhaowei@papaya python]$ python
    Python 2.5 (r25:51908, Jan 15 2007, 09:14:22)
    [GCC 3.2.2 20030222 (Red Hat Linux 3.2.2-5)] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import hello
    >>> hello.echo("hehe, hello")
    hehe, hello
    >>>

    三、再来说说在windows下怎么编译。你必须安装有mingw,简单来说安装有Dev-Cpp,然后把它安装目录下的bin目录加到环境变量的PATH里。
    比如我的就是把D:Dev-Cppin加到PATH里。
    开始了,打开命令行窗口,到hello.c所在目录,也运行一个命令,

    gcc -shared hello.c -IC:Python25include -LC:Python25libs -lpython25 -o hello.pyd

    就会在当前目录下生成一个hello.pyd的文件。

  • 相关阅读:
    POJ 3259 Wormholes【BellmanFord】
    POJ 2960 SNim【SG函数的应用】
    ZOJ 3578 Matrixdp水题
    HDU 2897 邂逅明下【bash博弈】
    BellmanFord 算法及其优化【转】
    【转】几个Java的网络爬虫
    thinkphp 反字符 去标签 自动加点 去换行 截取字符串 冰糖
    php 二维数组转 json文本 (jquery datagrid 数据格式) 冰糖
    PHP 汉字转拼音(首拼音,所有拼音) 冰糖
    设为首页与加入收藏 兼容firefox 冰糖
  • 原文地址:https://www.cnblogs.com/jsben/p/5156940.html
Copyright © 2011-2022 走看看