python3中调用C语言的函数
2015-11-17 00:00
686 查看
摘要: python3中调用C语言的函数
一, 先用C语言写好一个函数库
二, 然后使用gcc编译成静态库
三, 使用python的ctypes库导入该静态库
4, 执行结果如下:
如图1(math.c源码)
如图2(testmath.py)源码
如图3(执行结查)
一, 先用C语言写好一个函数库
#include<stdio.h> int add(int num1, int num2) { return num1 + num2; } int sub(int num1, int num2) { return num1 - num2; } int mul(int num1, int num2) { return num1 * num2; } int div(int num1, int num2) { return num1 / num2; }
二, 然后使用gcc编译成静态库
gcc -c -fPIC math.c gcc -shared math.o -o math.so
三, 使用python的ctypes库导入该静态库
#!/opt/python3/bin/python3 # from ctypes import * import os print("begin ......") libmathpath = os.path.join(os.getcwd(),"math.so") print(libmathpath) libmath = CDLL(libmathpath) print("-----------------") print(" ADD: 21 89") print(libmath.add(21,89)) print("-----------------") print(" SUB: 124 89") print(libmath.sub(123,89)) print("-----------------") print(" MUL: 12 77") print(libmath.mul(12,77)) print("-----------------") print(" DIV: 183 3") print(libmath.div(183,3)) print("-----------------")
4, 执行结果如下:
begin ...... /home/git/math.so ----------------- ADD: 21 89 110 ----------------- SUB: 124 89 34 ----------------- MUL: 12 77 924 ----------------- DIV: 183 3 61 -----------------
如图1(math.c源码)
如图2(testmath.py)源码
如图3(执行结查)
相关文章推荐
- C++迭代器之'插入迭代器'
- 一起talk C栗子吧(第六十一回:C语言实例--字符串连接)
- c++模板类学习--例子编译可能有问题【注】
- C++习题与解析-模板
- C++系列目录
- C++模板
- C++容器与算法
- 冒泡排序
- C++之map-set-multimap-multiset
- C++之vector和迭代器
- C++顺序容器二
- C++顺序容器一
- C++之string
- C++函数模板
- C++ OOP 之复制控制
- C++ back_inserter
- C++面向对象高级开发_极客班_第一节课笔记_section2
- C语言--归并排序算法实现
- C++ 标准库类型-String,Vector and Bitset
- C++ Primer 变量和基本类型