python 调用 C 动态库
来源:互联网 发布:c# 高级编程教程 编辑:程序博客网 时间:2024/04/29 21:41
首先是 C 的头文件和源文件,
#ifndef POINT_H #define POINT_H struct point { int x; int y; }; void point_print(struct point * p);#endif /* POINT_H */
#include <stdio.h> #include "point.h" void point_print(struct point * p) { printf("x = %d, y = %d\n", p->x, p->y);}
下面是编译命令,
gcc -fPIC -shared point.c -o libpoint.so
下面是 python 代码,
#! /usr/bin/python from ctypes import * class point(Structure): _fields_ = [ ("x", c_int), ("y", c_int) ] ptr = point(10, 20) libpoint = CDLL("./libpoint.so") libpoint.point_print(byref(ptr)) libpoint.point_print(pointer(ptr))
pointer 与 byref 的区别在于后者的效率高于前者,文档中提到如果只是向外部函数传递参数的引用,那么使用 byref 即可。下面运行,
$ ./point.py x = 10, y = 20x = 10, y = 20$
另外诸如字节序、对齐、返回值处理、类型转换和回调等等,可以参考这里。
阅读全文
0 0
- python 调用 C 动态库
- python 调用 C 动态库
- Python调用C/C++动态链接库
- Linux下Python调用C动态库
- Mac下Python调用C动态库
- Python调用C/C++动态链接库
- Python使用CFFI调用C动态库
- python调用c语言动态库示例
- Python使用CFFI调用C动态库
- python调用c动态库方法练习
- Python调用C语言之如何调用动态链接库
- 【Python】Python通过ctypes调用C动态链接库
- ctypes: 使用python调用C编写的动态链接库
- python 调用C 动态库 提示can not find symbol
- Python调用C/C++动态链接库的方法详解
- python 3 调用c/c++ 动态链接库 *.dll
- python中调用动态链接库(C++,DLL)
- python中调用动态链接库(C++,linux)
- 如何设置图片、文字在容器(div)中垂直居中的显示?
- 解决ValueAnimator.pause()与resume()向下不兼容
- Redis压缩列表原理与应用分析
- 关于上传的app的标识号和版本号
- 多重循环和动态规划解决最大子数组问题
- python 调用 C 动态库
- SpringMVC表单
- 查看mysql是否安装成功和mysql的版本信息
- 职场四原则
- 深度学习机器学习:softmax和log_softmax区分
- 关于jQuery设置复选框checked的属性
- 问题三 卸载VirtualBox时,回滚并提示"严重错误"
- PyQt5+matplotlib结合显示报表
- android 获取指定月份的开始时间 结束时间