ctypes python_Python ctypes 使用总结

本文详细介绍了Python的ctypes库如何调用C/C++动态库,包括基本用法、数组和指针类型、函数参数及返回类型、结构体的处理。ctypes适合轻量级的使用场景,是Python进行C/C++代码二次封装的好工具。
摘要由CSDN通过智能技术生成

Python 调用 C/C++ 的程序主要有两种方式:

使用 ctypes 调用动态库

ctypes 的方式相对来说成本较低,首先 ctypes 是内置库,使用方便,使用的过程中与 C/C++ 动态库的逻辑是完全独立的,互相可以单独维护。但是相对也有明显的缺点,C++ 在编译后的函数名会变,ctypes 使用起来不方便,API 相对也比较繁琐,写起来略微麻烦一些,使用出错的话会导致进程退出。

本文主要介绍 ctypes 的基本用法,可以对现有的 C/C++ 代码进行简单的二次封装后进行使用。笔者认为 ctypes 本身还是比较适合轻量级的使用场景,如果逻辑较为复杂的,请考虑使用 C/C++ 扩展的方式。

本文的 Python 以 2.7 版本为例,编译使用 gcc。

简单示例

写一个简单的 Hello 来说明一下最基本的用法。首先定义一个简单的 c 函数。

//hello_module.c

#include

int hello(const char* name) {

printf("hello %s!\n", name);

return 0;

}

编译生成动态库,动态库不同的系统后缀不同(Windows 的 dll,Linux 的 so,Mac 的 dylib),需要注意,本文以 so 为例。

gcc -fPIC -shared hello_module.c -o hello_module.so

通过 ctypes 来进行动态库加载及函数调用,注意 windows 的调用方式有专有的 API。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值