python中使用动态库
首先,创建一个简单的动态库
编程生成dll.so: gcc -fPIC -O2 -shared dll.c -o dll.so
C文件:dll.c 如下
#include <stdio.h>
struct param {
int a;
int b;
char c;
float f;
int arr[3];
};
void print0(struct param arg)
{
printf("in print:\n");
printf("a: %d\n", arg.a);
printf("b: %d\n", arg.b);
printf("c: %c\n", arg.c);
printf("f: %f\n", arg.f);
printf("arr: %d %d %d\n", arg.arr[0], arg.arr[1], arg.arr[2]);
}
void print2(struct param *arg)
{
printf("in print2 :\n");
printf("a: %d\n", arg->a);
printf("b: %d\n", arg->b);
printf("c: %c\n", arg->c);
printf("f: %f\n", arg->f);
printf("arr: %d %d %d\n", arg->arr[0], arg->arr[1], arg->arr[2]);
}
void print3(int a)
{
printf("in print3:\n");
printf("a: %d\n", a);
}
python定义传给动态库的结构体
from ctypes import * class ss(Structure):
_fields_ = [
("a", c_int),
("b", c_int),
("c", c_char),
("f", c_float),
("arr", c_int*3), //定义数组
]
python 使用dll.so实例
#加载动态库
fileName = "/home/primax/Desktop/Work/Test/python/dll.so"
lib = cdll.LoadLibrary(fileName)
#定义变量
param = ss()
#给结构体赋值
param.a = 1
param.b = 2
param.c = 'a'
param.f = 1.2345
param.arr[0] = 0
param.arr[1] = 1
param.arr[2] = 2 lib.print0(param)
lib.print3(2)
#传指针 pointer取指针
lib.print2(pointer(param))
python中使用动态库的更多相关文章
- python调用.net动态库
# python调用.net动态库 ### pythonnet简介------------------------------ pythonnet是cpython的扩展- pythonnet提供了cp ...
- Linux中的动态库和静态库(.a/.la/.so/.o)
Linux中的动态库和静态库(.a/.la/.so/.o) Linux中的动态库和静态库(.a/.la/.so/.o) C/C++程序编译的过程 .o文件(目标文件) 创建atoi.o 使用atoi. ...
- 【归纳】正则表达式及Python中的正则库
正则表达式 正则表达式30分钟入门教程 runoob正则式教程 正则表达式练习题集(附答案) 元字符\b代表单词的分界处,在英文中指空格,标点符号或换行 例子:\bhi\b可以用来匹配hi这个单词,且 ...
- 利用Python中的mock库对Python代码进行模拟测试
这篇文章主要介绍了利用Python中的mock库对Python代码进行模拟测试,mock库自从Python3.3依赖成为了Python的内置库,本文也等于介绍了该库的用法,需要的朋友可以参考下 ...
- Python中使用第三方库xlrd来写入Excel文件示例
Python中使用第三方库xlrd来写入Excel文件示例 这一篇文章就来介绍下,如何来写Excel,写Excel我们需要使用第三方库xlwt,和xlrd一样,xlrd表示read xls,xlwt表 ...
- Python中的动态类
Python中的动态类 有这样一个需求,我有SegmentReader.PostagReader.ConllReader这三个Reader,他们都继承于一个Reader类.在程序运行中,由用户通过se ...
- Python学习笔记整理(三)Python中的动态类型简介
Python中只有一个赋值模型 一.缺少类型声明语句的情况 在Python中,类型是在运行过程中自动决定的,而不是通过代码声明.这意味着没有必要事声明变量.只要记住,这个概念实质上对变量,对象和它们之 ...
- QT中添加 动态库(.so) 和 静态库 (.a) 的方法
在QT 的Makefile文件中: 1 添加动态库,如lipcap.so 则,在LIBS一行中添加“-L/usr/local/lib -lpcap”,依据自己的情况修改libpcap.so的路径 2 ...
- 【转】利用Python中的mock库对Python代码进行模拟测试
出处 https://www.toptal.com/python/an-introduction-to-mocking-in-python http://www.oschina.net/transla ...
随机推荐
- 哈希算法和字典类的定义,DataSet中数据遍历的几种方法
哈希算法的基本操作: 1. 哈希表(HashTable)简述 在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似 ...
- 插件化框架解读之Class文件与Dex文件的结构(一)
阿里P7移动互联网架构师进阶视频(每日更新中)免费学习请点击:https://space.bilibili.com/474380680 Class文件 Class文件是Java虚拟机定义并被其所识别的 ...
- matplotlib系列——饼图
import matplotlib.pyplot as plt import numpy as np import matplotlib import sys 1.主体函数 #饼图 def die(l ...
- OAuth授权登录
一.写在前面 日常生活中,我们经常看到到一个网站时,需要登录的时候,都提供了第三方的登录,也就是说你可以使用你的微信,QQ,微博等账号进行授权登录.那么这个认证登录的东西到底是什么呢? 微信授权登录页 ...
- elasticsearch 分析器 分词器
参考:https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-tokenizers.html 在全文搜索(Fu ...
- C# Aspose.Words 数据写入到word,模板样式复杂(转换指定内容并返回多张图片)
public ResultResponse<string[]> PrintStudyRecords([FromBody]StudyInfo info) { ResultResponse&l ...
- numpy 中的broadcast 机制
https://www.cnblogs.com/jiaxin359/p/9021726.html
- python问答
1)什么是Python?使用Python有什么好处? Python是一种编程语言,包含对象,模块,线程,异常和自动内存管理.Python的好处在于它简单易用,可移植,可扩展,内置数据结构,并且它是一个 ...
- 【转】java中JVM的原理
转载自https://blog.csdn.net/witsmakemen/article/details/28600127/ 一.java虚拟机的生命周期: Java虚拟机的生命周期 一个运行中的Ja ...
- 每天一个linux命令:cat(10)
cat cat命令的用途是连接文件或标准输入并打印.这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用 注意:当文件较大时,文本在屏幕上迅速 ...