这里使用 Python 的 ctypes 模块实现 Python 和 C 语言的混合编程。ctypes 是 Python 的一个外部函数库,它提供了与 C 语言兼容的数据类型,并允许调用共享库中的函数。你可以在 Python 中直接调用 C 代码,而无需编写扩展模块。
检查是否存在 gcc 环境:
gcc --version
如果不存在,gcc 环境的安装可以参考这篇:Linux系统中gcc/g++/gfortran环境的安装。
一、调用 C 标准库函数
Python 代码 a.py 内容为:
from ctypes import cdll
lib = cdll.LoadLibrary("libc.so.6") # Linux 系统
# lib = cdll.msvcrt # Windows 系统
# 调用 C 标准库中的 printf 函数,字符串需要编码为 bytes
message = b"Hello, ctypes!\n"
result = lib.printf(message)
print(result)
运行结果:
Hello, ctypes!
15
二、调用自定义的 C 语言函数
C 语言代码 example.c 内容为:
int add_two_numbers(int a, int b) {
return a + b;
}
编译(Linux 系统):
gcc -shared -o example.so -fPIC example.c
编译(Windows 系统):
gcc -shared -o example.dll example.c
编译后会得到 example.so 文件。
Python 代码 a.py 内容为:
from ctypes import cdll
lib = cdll.LoadLibrary('./example.so') # Linux 系统
# lib = cdll.LoadLibrary('./example.dll') # Windows 系统
# 调用 C 函数
result = lib.add_two_numbers(3, 5)
print(result)
运行 Python 程序:
python a.py
运行结果:
8
【说明:本站主要是个人的一些笔记和代码分享,内容可能会不定期修改。为了使全网显示的始终是最新版本,这里的文章未经同意请勿转载。引用请注明出处:https://www.guanjihuan.com】