Python调用C语言函数
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
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语言函数相关推荐
- python调用c语言函数_从Python调用C函数
python调用c语言函数 We can call a C function from Python program using the ctypes module. 我们可以使用ctypes模块从P ...
- python调用c语言内核计算,在Linux上实现Python调用C语言函数
一般思路 Python中内置ctypes库,需调用c编译成的.so文件来实现函数调用. 假设我们所需调用的c文件名为test.c,文件里有我们需要的函数func(x,y). 将.c文件编译成 .so文 ...
- python 调用 C语言函数
python可以直接调用C语言的函数,本文记录用ctypes调用c语言的方法. test.c #include <stdio.h>int test(char *temp) {printf( ...
- python调用C语言函数(方法)的几种方法
1. 使用ctypes 可能是Python调用C方法中最简单的一种 2. 使用SWIG 是Python中调用C代码的另一种方法.在这个方法中,开发人员必须编写一个额外的接口文件来作为SWIG的入口. ...
- go加载python_python培训 | python调用go语言来提速
在写一些对性能要求十分严格的功能的时候,python往往力不从心.毕竟是一个解释性的语言,没有办法和变异性的语言去比较速度和内存占用率.但是python的本身的特定就使得我们可以将耗时的操作移交给编译 ...
- python调用r语言加载包错误_Python调用R语言
网络上经常看到有人问数据分析是学习Python好还是R语言好,还有一些争论Python好还是R好的文章.每次看到这样的文章我都会想到李舰和肖凯的<数据科学中的R语言>,书中一直强调,工具不 ...
- python调用C语言动态链接库详解
python调用动态链接库详解 Python 调用动态链接库 环境说明 构建动态链接库 python动态链接库基础调用 python动态链接库结构体调用 python动态链接库回调函数 本文介绍在li ...
- Python调用C语言(DLL)
前言:本文可结合Python调用C++语言(DLL)使用,效果更佳. 采用导出形式:__declspec(dllexport) 功能 无参数,无返回类型 有参数,有返回值 [不需要修改参数数值] 有参 ...
- C语言第五篇 python调用C语言写的动态链接库DLL文件
学习目标:1.学会C语言写windows下的DLL文件.2.用gcc命令将C程序编译成DLL文件.3.学会用python调用C语言写的DLL. 学习内容1:先用C语言写一个简单程序,先建立dll.c文 ...
最新文章
- 还分不清 Cookie、Session、Token、JWT?
- 微信小程序用wxs实现手机号码用****代替
- 完美打工人罗永浩,到底错在哪?
- Dart Hello World 示例程序【Dart专题1】
- java基础之设计模式
- 【GDB调试学习笔记】GDB调试入门
- windows 拖拽功能
- Atitit Java内容仓库(Java Content Repository,JCR)的JSR-170 文件存储api标准 目录 1. Java内容仓库	1 2. Java内容仓库	2 2.1.
- MySQL数据库的卸载
- 强化学习用于电力系统决策与控制(一)——频率调整
- Simulink之晶闸管(可控硅SCR)
- 你怎么看:就算老公一毛钱股份都没拿到,在我心里,他依然是最牛逼的创业者...
- 爱加密加固病毒分析-脱壳篇
- iOS 手动实现KVO / iOS KVO底层原理
- Unity同时接入微信和支付宝支付 Android篇(aar包和jar包)
- 解决win10新装系统无法登录微软账户及microsoft store
- 商标45类分类表明细表_45类商标分类明细_45类商标经营范围包括哪些商品-商标查询-知夫子...
- java判断颜色合法_判断颜色是否合法的正则表达式(详解)
- 夏季哪些蔬菜不适合生吃凉拌,食用会发生危险
- 360秒抓取收录批量提交程序
热门文章
- FunTester框架Redis压测预备
- 自考计算机应用技术题,全国自考计算机应用技术试题及答案解析-20210522014558.docx-原创力文档...
- php文本框长度限制,php截取富文本框中的固定长度的字符
- php 删除最后一个空数组,php删除空数组
- 用python写一个程序来验证每个数字的生成概率是否相同_Python实现简单生成验证码功能【基于random模块】...
- YOLOv5:道路损伤检测
- 文档智能理解:通用文档预训练模型与数据集
- 信息抽取——关系抽取
- python winio_Python pywinio包_程序模块 - PyPI - Python中文网
- chart控件支持鼠标滚轮放大缩小_强大的鼠标侧键功能设置工具:X-Mouse Button Control...