Python专题, 语言

Python和C语言的混合编程

这里使用 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
25 次浏览

【说明:本站主要是个人的一些笔记和代码分享,内容可能会不定期修改。为了使全网显示的始终是最新版本,这里的文章未经同意请勿转载。引用请注明出处:https://www.guanjihuan.com

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

Captcha Code