Python调用C,主要是依靠Python的ctypes调用动态链接库

返回“简单类型”

C代码:

int
multiply(int num1, int num2)
{return num1 * num2;
}

gcc命令:

gcc -c -fPIC libtest.c
gcc -shared libtest.o -o libtest.so

Python调用:

>>> from ctypes import *
>>> import os
>>> libtest = cdll.LoadLibrary(os.getcwd() + '/libtest.so')
>>> print libtest.multiply(2, 2)
4

返回“结构体类型”
C代码:
typedef struct pointer_test_s
{char name[20];int age;
}pointer_test_t, *struct_pointer;struct_pointer test()    // 返回结构体指针
{ struct_pointer p = (struct_pointer)malloc(sizeof(pointer_test_t)); strcpy(p->name, "Joe");p->age = 20;return p;
}

Python代码:

#!/bin/env python
# coding=UTF-8from ctypes import *#python中结构体定义
class StructPointer(Structure):_fields_ = [("name", c_char * 20), ("age", c_int)]if __name__ == "__main__":lib = cdll.LoadLibrary("./libtest.so")lib.test.restype = POINTER(StructPointer)p = lib.test()print "%s: %d" %(p.contents.name, p.contents.age)

附类型对照:

转载于:https://www.cnblogs.com/claresun/p/3666381.html

Python调用C语言函数相关推荐

  1. python调用c语言函数_从Python调用C函数

    python调用c语言函数 We can call a C function from Python program using the ctypes module. 我们可以使用ctypes模块从P ...

  2. python调用c语言内核计算,在Linux上实现Python调用C语言函数

    一般思路 Python中内置ctypes库,需调用c编译成的.so文件来实现函数调用. 假设我们所需调用的c文件名为test.c,文件里有我们需要的函数func(x,y). 将.c文件编译成 .so文 ...

  3. python 调用 C语言函数

    python可以直接调用C语言的函数,本文记录用ctypes调用c语言的方法. test.c #include <stdio.h>int test(char *temp) {printf( ...

  4. python调用C语言函数(方法)的几种方法

    1. 使用ctypes 可能是Python调用C方法中最简单的一种 2. 使用SWIG 是Python中调用C代码的另一种方法.在这个方法中,开发人员必须编写一个额外的接口文件来作为SWIG的入口. ...

  5. go加载python_python培训 | python调用go语言来提速

    在写一些对性能要求十分严格的功能的时候,python往往力不从心.毕竟是一个解释性的语言,没有办法和变异性的语言去比较速度和内存占用率.但是python的本身的特定就使得我们可以将耗时的操作移交给编译 ...

  6. python调用r语言加载包错误_Python调用R语言

    网络上经常看到有人问数据分析是学习Python好还是R语言好,还有一些争论Python好还是R好的文章.每次看到这样的文章我都会想到李舰和肖凯的<数据科学中的R语言>,书中一直强调,工具不 ...

  7. python调用C语言动态链接库详解

    python调用动态链接库详解 Python 调用动态链接库 环境说明 构建动态链接库 python动态链接库基础调用 python动态链接库结构体调用 python动态链接库回调函数 本文介绍在li ...

  8. Python调用C语言(DLL)

    前言:本文可结合Python调用C++语言(DLL)使用,效果更佳. 采用导出形式:__declspec(dllexport) 功能 无参数,无返回类型 有参数,有返回值 [不需要修改参数数值] 有参 ...

  9. C语言第五篇 python调用C语言写的动态链接库DLL文件

    学习目标:1.学会C语言写windows下的DLL文件.2.用gcc命令将C程序编译成DLL文件.3.学会用python调用C语言写的DLL. 学习内容1:先用C语言写一个简单程序,先建立dll.c文 ...

最新文章

  1. 还分不清 Cookie、Session、Token、JWT?
  2. 微信小程序用wxs实现手机号码用****代替
  3. 完美打工人罗永浩,到底错在哪?
  4. Dart Hello World 示例程序【Dart专题1】
  5. java基础之设计模式
  6. 【GDB调试学习笔记】GDB调试入门
  7. windows 拖拽功能
  8. Atitit Java内容仓库(Java Content Repository,JCR)的JSR-170 文件存储api标准 目录 1. Java内容仓库 1 2. Java内容仓库 2 2.1.
  9. MySQL数据库的卸载
  10. 强化学习用于电力系统决策与控制(一)——频率调整
  11. Simulink之晶闸管(可控硅SCR)
  12. 你怎么看:就算老公一毛钱股份都没拿到,在我心里,他依然是最牛逼的创业者...
  13. 爱加密加固病毒分析-脱壳篇
  14. iOS 手动实现KVO / iOS KVO底层原理
  15. Unity同时接入微信和支付宝支付 Android篇(aar包和jar包)
  16. 解决win10新装系统无法登录微软账户及microsoft store
  17. 商标45类分类表明细表_45类商标分类明细_45类商标经营范围包括哪些商品-商标查询-知夫子...
  18. java判断颜色合法_判断颜色是否合法的正则表达式(详解)
  19. 夏季哪些蔬菜不适合生吃凉拌,食用会发生危险
  20. 360秒抓取收录批量提交程序

热门文章

  1. FunTester框架Redis压测预备
  2. 自考计算机应用技术题,全国自考计算机应用技术试题及答案解析-20210522014558.docx-原创力文档...
  3. php文本框长度限制,php截取富文本框中的固定长度的字符
  4. php 删除最后一个空数组,php删除空数组
  5. 用python写一个程序来验证每个数字的生成概率是否相同_Python实现简单生成验证码功能【基于random模块】...
  6. YOLOv5:道路损伤检测
  7. 文档智能理解:通用文档预训练模型与数据集
  8. 信息抽取——关系抽取
  9. python winio_Python pywinio包_程序模块 - PyPI - Python中文网
  10. chart控件支持鼠标滚轮放大缩小_强大的鼠标侧键功能设置工具:X-Mouse Button Control...