使用c语言对Python进行扩展(白话就是使用python对c语言库的调用)

过程会有些繁琐仔细阅读会有所收获。需要下载各种环境

演示之前呢先说明这些工具的作用

SWIG (Simplified Wrapper and Interface Generator)

作用: SWIG 是一个工具,用于将 C 和 C++ 代码包装成其他高级编程语言(如 Python、Java、Ruby 等)的模块,使它们能够调用 C/C++ 函数。

GCC (GNU Compiler Collection)

作用: GCC 是一个广泛使用的编译器集合,支持多种编程语言(如 C、C++、Fortran、Go 等)。它的主要功能是将源代码编译成可执行程序

一,先安装SWIG

链接:Simplified Wrapper and Interface Generator

swig所在的目录要添加环境变量

二,安装GCC

链接:WinLibs - GCC+MinGW-w64 compiler for Windows

自行安装即可,同理和上面一样添加环境变量

三,运行SWIG和GCC,对c文件进行包装

运行前先编写c文件和头文件palindrome.h以及接口文件palindrome.i

创建源文件:

1.以palindrome.c为例

定义 is_palindrome 函数,用于判断字符串是否为回文:

--------------------------------------------------------------------------------------

#include <string.h>

int is_palindrome(const char *str) {
    int len = strlen(str);
    for (int i = 0; i < len / 2; i++) {
        if (str[i] != str[len - i - 1]) {
            return 0;
        }
    }
    return 1;
}

-----------------------------------------------------------------------------------------
2.头文件palindrome.h,,声明 is_palindrome 函数:

---------------------------------------------------------------

#ifndef PALINDROME_H
#define PALINDROME_H

int is_palindrome(const char *str);

#endif

--------------------------------------------------------------------

3.SWIG 接口文件palindrome.i,用于生成 Python 接口:

-------------------------------------------------------------------

%module palindrome
%{
#include "palindrome.h"
%}

%include "palindrome.h"

-------------------------------------------------------------------

4.

使用 SWIG 生成包装代码

在终端运行以下命令,生成 palindrome_wrap.cpalindrome.py 文件:

终端执行命令 swig -python palindrome.i
运行之后有如下文件

5. 使用 GCC 编译共享库

在 Windows 环境中使用 GCC 编译:终端执行命令

gcc -shared -o _palindrome.pyd palindrome.c palindrome_wrap.c -IC:\Users\Administrator\AppData\Local\Programs\Python\Python312\include -LC:\Users\Administrator\AppData\Local\Programs\Python\Python312\libs -lpython312

6. 测试 Python 模块

确保生成的 _palindrome.pydpalindrome.py 文件在同一目录中,然后在 Python 中测试:

详细说明

  1. swig 生成的文件

    • palindrome_wrap.c:C 接口代码,负责连接 Python 和 palindrome.c
    • palindrome.py:Python 模块,用于调用 _palindrome.pyd
  2. GCC 编译共享库

    • .pyd 文件是 Windows 平台上的共享库,相当于 Linux 的 .so 文件。
  3. 环境变量: 确保 Python 的路径已加入到 Path 环境变量中,并且 GCC 安装正确。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值