过程会有些繁琐仔细阅读会有所收获。需要下载各种环境
演示之前呢先说明这些工具的作用
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.c
和 palindrome.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.pyd
和 palindrome.py
文件在同一目录中,然后在 Python 中测试:
详细说明
-
swig
生成的文件:palindrome_wrap.c
:C 接口代码,负责连接 Python 和palindrome.c
。palindrome.py
:Python 模块,用于调用_palindrome.pyd
。
-
GCC 编译共享库:
.pyd
文件是 Windows 平台上的共享库,相当于 Linux 的.so
文件。
-
环境变量: 确保 Python 的路径已加入到
Path
环境变量中,并且 GCC 安装正确。