Python 调用 C/C++
来源:互联网 发布:淘宝号怎么申请注册 编辑:程序博客网 时间:2024/06/05 06:22
学习一门学问,最重要的是把握主干内容,迅速建立对这门学问的整体概念,不必一开始就考虑所有的细枝末节和特殊情况,自乱阵脚。
我们从实践入手 :
一. 准备 Python 中要使用的 C 程序 my_calculate.c:
#include#include #define True 1#define False 0#define None -1// 对两个整数进行相加操作int add(unsigned long long a, unsigned long long b){ return a + b;}// 对两个整数进行相减操作int minus(unsigned long long a, unsigned long long b){ return a - b;}// 对两个整数进行相乘操作int plus(unsigned long long a, unsigned long long b){ return a * b;}// 对两个整数进行相除操作int divide(unsigned long long a, unsigned long long b){ return a / b;}
使用 gcc 对代码进行编译 :
gcc my_calculate.c -fPIC -shared -o my_calculate.so
其中的参数意义是 :
-fPIC :
作用于编译阶段,告诉编译器产生与位置无关的代码 ( Position-Independent Code ) , 产生的代码中,全部使用相对地址, 这也是编译动态链接共享库所要求的。
-shared :
生成一个共享的目标文件,它能够与其他目标一起链接生成可执行文件等文件。
-o my_calculate.so :
输出文件名为 my_calculate.so 其中 so 为 shared object , so 文件是 Linux 系统下动态链接共享库文件,与 Windows 中的 .dll 文件对应。
编译结果 :
上述编译命令生成文件 my_calculate.so
二. 使用 Python 调用 my_calculate.so:
from ctypes import *my_lib = cdll.LoadLibrary("./my_calculate.so")print(my_lib.add(123, 234))357print(my_lib.minus(123, 234))-111print(my_lib.plus(12, 23))276print(my_lib.divide(12, 2))6
这样就在 Python 中调用了 C 程序代码
三. Ctype 简介:
Ctype 是 Python 的外部功能库,允许调用 DLL 或者共享库中的函数,从 Python2.5 开始 Ctypes 成为了 Python 的标准模块之一 。
Ctype 兼容 C 的数据类型 :
可以这么来使用 :
from ctypes import *i = c_int(45)print(i.value)45
阅读全文
0 0
- BCB(C++)调用Python
- C中调用PYTHON
- C调用python
- C调用python
- Python 调用 C函数
- python调用c
- Python 调用C
- c中调用python
- Python调用c/c++
- c 调用python
- python 调用 c 函数
- python调用C函数库
- Python调用C
- Python调用C/C++
- Python调用C程序
- python调用c/c++
- python调用c
- c调用python
- php 随机生成数字字母组合
- Centos7 安装iptables防火墙
- 欧几里得算法(辗转相除)及其扩展证明
- antlr4读书笔记
- 【CS】软件测试概念Software Testing
- Python 调用 C/C++
- 实验一线性表的基本操作实现及其应用
- 神经网络与深度学习学习笔记:L2正则化
- 解决Celery进程重启后,正在进行中的任务丢失或者标记为失败
- mysql/servlet用户名密码判断是否存在数据库
- Java知识复习(集合)
- Mongodb数据更新命令、操作符
- Codeforces 722E [DP]
- 理解python的with as 语句