python中调用c库

2013-04-23 15:34:52|  分类: python核心编程 |  标签:python  makefile   |举报 |字号 订阅

参考地址:http://my.oschina.net/ibmdw/blog/14750
http://blog.csdn.net/sraing/article/details/4384245
1、源文件
getstring.c  getstring.h    reverse.c  reverse.h
getstring.c

#include<stdio.h>
char *getstring(char *str,int num)
{    printf("%s\n",str);
    return str;
}

getstring.h

char *getstring(char *str,int num);

reverse.c

#include<stdio.h>
#include"getstring.h"
char *reverse(char *str,int num)
{    getstring(str,num);
    int half = num / 2;
    int i;
    char temp;
    for(i =0;i < half;++ i)
    {        temp = str[num - 1 - i];
        str[num - 1 - i] = str[i];
        str[i] = temp;
    }
    printf("%s\n",str);
    return str;
}

reverse.h

#include<stdio.h>char *reverse(char *str,int num);

2、生产静态库.o文件
1、 cc -c getstring.c
生成getstring.o文件
2、cc -c reverse.c getstring.h
生成reverse.o及getstring.h.gch

3、生成动态库.so文件
gcc -shared -fPCI -o libreverse.so reverse.o getstring.o
生成文件libreverse.so

4、在python中调用.so文件
>>> import ctypes
>>> so = ctypes.CDLL("./libreverse.so")
>>> fun = so.reverse
>>> fun("himan",5)
himan
namih
-1217157164

5、Makefile

reverse.so:getstring.o reverse.o
    gcc -shared -fPCI -o libreverse.so reverse.o getstring.oreverse.o:reverse.c getstring.h
    cc -c reverse.cgetstring.o:getstring.c
    cc -c getstring.cclean:
    rm -rf *.o *.so *.out *.gch
reverse.so:getstring.o reverse.o
    @$(CC) -shared -fPCI -o $@ $^.PHONY:clean
clean:
    @$(RM) *.o *.so *.out *.gch

@是阻止命令输出

$(RM) = rm -f
$(CC) = gcc
$@ = reverse.so所有目标
$^ = getstring.o reverse.o 所有依赖项
.PHONY = 伪目标

python中调用c库相关推荐

  1. python如何调用dll库中的函数_Python调用dll库接口-ctypes方法

    背景 最近需要用python写个脚本程序(win10 环境),需要调用现成的dll库完成这项任务,对于一直在Linux平台上开发程序的本人来说,从没有过使用dll的经历(不得不说还是so大法好),遇到 ...

  2. python中的sheet,Python中的Smartsheet库:模块'smartsheet.sheets'没有属性'sheets'

    我正在尝试在python中使用smartsheet库. 使用'$ pip install smartsheet-python-sdk'完成pip安装. 我使用以下代码在令牌上进行了测试. import ...

  3. 一文实现:在python中调用matlab程序,保姆级安装windows环境下的matlab.engine教程

    一.前言   我最近在做一个基于图像融合的目标检测工程,我经常用matlab去研究和创新新型的图像融合算法,因为matlab有着python所不可比拟的数据可视化功能和大量的滤波分解框架包:在目标检测 ...

  4. 在Python中调用C/C++:cython及pybind11

    在Python中调用C/C++:cython及pybind11 转自:https://zhuanlan.zhihu.com/p/442935082 Python写起来非常方便, 但面对大量for循环的 ...

  5. python中调用什么模块的什么函数来实现求实数平方根_python语言基础与应用答案...

    python语言基础与应用答案 python3不再区分整数和长整数,统一为()类型. python可以使用(____)函数打开文件,这个函数默认的打开模式为(____). a=[3]alist=[1, ...

  6. python中nlp的库_单词袋简介以及如何在Python for NLP中对其进行编码

    python中nlp的库 by Praveen Dubey 通过Praveen Dubey 单词词汇入门以及如何在Python中为NLP 编写代码的简介 (An introduction to Bag ...

  7. 在python中调用js或者nodejs要使用PyExecJs第三方包。

    在python中调用js或者nodejs要使用PyExecJs第三方包. 使用时:import execjs 这是没有用到nodejs的情况:如果用到nodejs,这种写法会报"Cannot ...

  8. 如何在Python中调用Windows的cmd命令?

    简 介: 利用os,commands,subprocess模块可以在python中调用windows中的命令.从使用方便性上来看,利用os.popen可以执行windows的程序并可以获得返回内容. ...

  9. python中的迭代库

    python中的迭代库为itertools,如果需要输出详细,需要使用类型工厂函数,如list,tuple将结果转换 itertools.product:product(A,B) 相当于((x, y) ...

最新文章

  1. 《强化学习周刊》第34期:牛津、谷歌、Facebook等 | 自动强化学习 (AutoRL):研究综述和开放性问题...
  2. NovuMind 首秀 CES,展示业界最高性能的 AI 芯片
  3. Webpack学习-工作原理(上)
  4. 区块链教程Fabric1.0源代码分析Tx(Transaction 交易)二
  5. 如何设置多个图层层叠关系_凉山车载式叠螺污泥脱水机_山东领旗环保科技
  6. springboot整合jdbc
  7. asp.net mvc使用TagBuilder的应用程序集
  8. php 如何生成exe文件怎么打开,如何把PHP转成EXE文件
  9. H3C IS-IS实验
  10. 使用shell命令文件和lame工具在mac平台批量压缩mp3,可压缩至原来的50%左右。
  11. CentOs7下Zabbix安装教程——zabbix agent安装和前端配置
  12. 11 个超火的前端必备在线工具,终于有时间上班摸鱼了
  13. 注释全 新手可懂 可复用式复数计算器C++实现
  14. AI生成新春祝福海报,AIGC从“炫技”走向日常
  15. 计算机专业买笔记本有什么要求,笔记本电脑什么配置好?硬核选购指南来了!...
  16. 无主之地2 不费子弹手枪
  17. golang中结构体转成xml格式
  18. iOS第三方库汇总分享
  19. 汇编:assembly (intel x86/x86_64)
  20. 武汉大学计算机学院编程能力,2014武汉大学计算机学院国家多媒体软件工程技术研究中心复试经验总结...

热门文章

  1. 当linkedin connection达到1500的时候的感受
  2. 【转】运输层TCP协议详细介绍
  3. vue组件开发脚手架(vue-sfc-rollup),开发组件并发布至npm的利器
  4. 刷前端面经笔记(十二)
  5. Sybase中字符串替换函数 STR REPLACE
  6. 系统无ifconfig,一条命令获取本机ip并将其赋值给指定变量来使用
  7. Jquery之编辑不可修改
  8. SharePoint 2013 术语和术语集介绍
  9. 如何对DevExpress ASPxGridView进行分组排序?
  10. Installshield 2010 中集成. Net framework4 与 vc++ 2010运行安装包