Python调用C动态库并通过bytes传参
通过Python内建库ctypes调用C语言。
#!/usr/bin/python3
# file : bytes_test.py
import ctypes as ct
import os
# 编译C程序为动态库
os.system("gcc -fpic -shared bytes_test.c -o bytes_test.dll")
# 加载动态库
clib = ct.CDLL("./bytes_test.dll")
# 分配内存
src = b"0123"
out = bytes(len(src))
print(f"src={src}, out={out}")
# 取指针
src_ptr = ct.cast(src, ct.c_char_p)
out_ptr = ct.cast(out, ct.c_char_p)
# 调用C函数
clib.copy(out_ptr, src_ptr, len(src))
print(f"src={src}, out={out}")
// file : bytes_test.c
int copy(unsigned char *out, unsigned char *src, int size)
{
int i;
for(i=0; i<size; ++i){
out[i] = src[i];
}
return i;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律