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\n", something);
Py_INCREF(Py_None);
return Py_None;
} static PyMethodDef hello_methods[] = {
{"echo", (PyCFunction)hello_echo, METH_VARARGS | METH_KEYWORDS, "print string"},
{NULL, NULL, , NULL}
}; void
inithello(void)
{
Py_InitModule("hello", hello_methods);
}

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

gcc -shared -fPIC hello.c -I/usr/include/python2./ -L/usr/lib -lpython2. -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:, Jan , ::)
[GCC 3.2. (Red Hat Linux 3.2.-)] 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-Cpp\bin加到PATH里。
开始了,打开命令行窗口,到hello.c所在目录,也运行一个命令,

gcc -shared hello.c -IC:\Python25\include -LC:\Python25\libs -lpython25 -o hello.pyd

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

C语言程序转换为Python语言的更多相关文章

  1. Python+selenium测试环境成功搭建,简单控制浏览器(firefox)接下来,继续学习其他浏览器上的测试环境搭建;学习Python语言,利用Python语言来写测试用例。加油!!!

    Python+selenium测试环境成功搭建,简单控制浏览器(firefox)接下来,继续学习其他浏览器上的测试环境搭建:学习Python语言,利用Python语言来写测试用例.加油!!!

  2. python语言的优点和缺点

    python作为一门高级编程语言,它的诞生虽然很偶然,但是它得到程序员的喜爱却是必然之路. 龟叔给Python的定位是"优雅"."明确"."简单&qu ...

  3. Python语言学习之Python入门到进阶

    人们常说Python语言简单,编写简单程序时好像也确实如此.但实际上Python绝不简单,它也是一种很复杂的语言,其功能特征非常丰富,能支持多种编程风格,在几乎所有方面都能深度定制.要想用好Pytho ...

  4. python语言的优缺点

    python作为一门高级编程语言,它的诞生虽然很偶然,但是它得到程序员的喜爱却是必然之路. 龟叔给Python的定位是“优雅”.“明确”.“简单”,所以Python程序看上去总是简单易懂,初学者学Py ...

  5. 第 2 章 Python 语言入⻔

    目录 2.1低而长的学习曲线 2.2Python的优势 2.3在你的计算机中安装Python 2.4如何运行Python程序 2.5文本编辑器 2.6寻求帮助 Python语言是一种流行的编程语言,在 ...

  6. 010 深入理解Python语言

    目录 一.概述 二.计算机技术的演进 2.1 计算机技术的演进过程 三.编程语言的多样初心 3.1 编程语言有哪些? 3.2 不同编程语言的初心和适用对象 3.3 2018年以后的计算环境- 四.Py ...

  7. Python语言的特点及自学建议

    Python语言的特点Python语言是一种被广泛使用的高级通用脚本编程语言,具有很多区别于其他语言的特点,这里仅列出如下一些重要特点.(1)语法简洁:实现相同功能,Python语言的代码行数仅相当于 ...

  8. 深入理解python语言

    2008年,安卓操作系统诞生:PC时代向移动时代转换 互联网,视窗 2017/5/27柯洁最终0:3AlphaGo 计算机技术的演进过程 不同编程语言的设计初心和适用对象 C语言核心解决的是性能问题, ...

  9. python语言概述

    python语言的发展 python语言诞生于1990年,由Guide van Rossum设计并领导开发. python语言是开源项目的优秀代表,其解释器的全部代码都是开源的. 编写Hello程序 ...

随机推荐

  1. jquery $.ajax $.get $.post的区别

    $.ajax 是 jQuery 底层 AJAX 实现,$.ajax是一种通用的底层封装,$.ajax()请求数据之后,则需要使用回调函数,有beforeSend.error.dataFilter.su ...

  2. docker进入容器

    进入容器的三种方式: sshd nsenter exec sshd 在容器中开启一个SSHD的服务,通过SSH的协议登录到容器中,把容器看出一个vm nsenter: nsenter包含在util-l ...

  3. c++ 覆盖、重载、隐藏

    函数重载: 1.相同的范围内(即同一类中) 2.函数名相同: 3.参数不同: 4.virtual关键字可有可无: 函数覆盖:虚函数的功能.动态多态 (父类中必须有virtual)========派生类 ...

  4. sql--关于exec和sp_execute

    sql:exec与sp_excutesql的比较 exec与sp_execute都可以执行存储过程和批处理动态sql语句,以下所属均是关于批处理动态sql语句方面. 一.关于输入参数与输出参数 1.使 ...

  5. spark学习

    大数据学习纲要,主要针对spark的相关知识的学习,后续会涉及其他大数据相关框架及语言. 1 spark入门: 2.spark 实战部分 3.spark源码解析

  6. union 和 union all 有什么不同?

    假设我们有一个表 Student, 包括以下字段与数据:drop table student;create table student( idint primary key,name nvarchar ...

  7. POJ 2253 Frogger floyd算法

    题目:click here 题意: 给出两只青蛙的坐标A.B,和其他的n-2个坐标,任意两坐标间是双向连通的.显然从A到B存在至少一条的通路,每一条通路的元素都是这条通路中前后两个点的距离,这些距离中 ...

  8. c++ primer plus 习题答案(6)

    p425.1 #include<iostream> #include<cstring> #include<cstdlib> using namespace std; ...

  9. BZOJ 2751: [HAOI2012]容易题(easy)( )

    有限制的最多就K个, 所以我们处理一下这K个就行了. 其他可以任选, 贡献都是∑i (1≤i≤N), 用快速幂. ------------------------------------------- ...

  10. 重定向输入输出流--freopen

    freopen是被包含于C标准库头文件<stdio.h>中的一个函数,用于重定向输入输出流.该函数可以在不改变代码原貌的情况下改变输入输出环境. C99函数声明: FILE *freope ...