测试环境:win10 64bit+python3.6+powershell+Microsoft Visual C++ Build Tools 2015
------------------------------------------------------------------------------------------------------------
1. 安装SWIG
去官网下载安装包:http://www.swig.org/
1)解压安装包
2)将安装包文件夹中swig.exe所在路径添加到系统环境变量
2. 准备测试代码
palindrome.c
#include <string.h>
int is_palindrome(char *text) {int i, n = strlen(text);for (i = 0; i <= n/2; ++i) {if (text[i] != text[n-i-1]) return 0;}return 1;
}
3. 编写swig接口描述文件
palindrome.i
%module palindrome
%{
#include <string.h>
%}
extern int is_palindrome(char *text);
注:
也可以尝试直接使用源代码的头文件
4. 编写setup.py
from setuptools import setup,Extension
setup(name='palindrome',version='1.0',ext_modules=[Extension('_palindrome', ['palindrome.c', 'palindrome.i'])])
5. 生成包装器和库
执行:python setup.py build_ext --inplace
这个步骤将生成以下文件:
注:执行此命令,python 会调用vc++编译工具,如果此前没有安装会有如下提示:
我们可以安装visual c++ build tools来解决。
6. 测试
在当前目录执行python进入解释器。
依次执行:
>>> import palindrome
>>> palindrome.is_palindrome("12321")
1
>>>
>>> palindrome.is_palindrome("1232")
0
测试ok!
注:如果在非当前目录进入python解释器,执行 import palindrome会提示找不到模块。

python:使用SWIG和setuptools编写c语言扩展(windows)相关推荐

  1. 如何将c语言程序封装供python调用_转:用C语言扩展Python的功能

    一.简介 Python是一门功能强大的高级脚本语言,它的强大不仅表现在其自身的功能上,而且还表现在其良好的可扩展性上,正因如此,Python已经开始受到越来越多人的青睐,并且被屡屡成功地应用于各类大型 ...

  2. Python:使用SWIG编写C语言扩展

    测试环境 ubuntu版本:ubuntu-gnome-16.04-desktop-amd64,gnome版 python版本:python3.5.2 ------------------------- ...

  3. python的c语言扩展方法简介

    2019独角兽企业重金招聘Python工程师标准>>> 原文地址:[http://www.isnowfy.com/introduction-to-python-c-extension ...

  4. c++ 调用python_闲话python 48: C/C++扩展Python与Swig工具

    python作为一种通用的编程语言,一般而言,是能够满足逻辑实现的需求的.只是在日常使用过程中,除了实现一些逻辑之外,至少还有两个方面的需求是可能需要寻求其他语言帮助的,第一个是提升运行效率,第二个是 ...

  5. 黑客用python还是ruby-Python、Ruby、Go语言哪个更值得学习?

    路过,进来答一篇. 先说python, Python的优点是足够简单,语言年龄大,有历史年头了,积累很广的使用人群,库也非常的完善,很多数据库,表格出具,爬虫,算法等你能想到的,python都有库实现 ...

  6. python 是什么类型的语言-python是一种什么类型的语言

    小时不识月,呼作白玉盘.很多人习惯地说Python不过是一种脚本语言而已,实际上这种说法是非常不准确的,完全不能体现出Python的强大. 严格来说,Python是一门跨平台.开源.免费的解释型高级动 ...

  7. python 是什么类型的语言-Python什么意思是一门什么样的语言

    最近几年以来,Python的发展非常迅速,尤其是自2017年以来,随着人工智能概念的兴起,python的关注度也是越来越高,甚至被相继纳入浙江省高考和山东省的小学教材.对于许多本身就是IT专业的同学来 ...

  8. python第一个发行版本由c语言实现_【Python】讲真,你知道Python咋来的吗?

    Python诞生在一个圣诞节 Python诞生于1989年的一个圣诞节,其创作者Guido van Rossum为了打发圣诞节假期的无聊,便开始了Python语言的编写.Python第一个发行版本是在 ...

  9. python代码用c语言封装_使用C语言扩展Python程序的简单入门指引

    一.简介 Python是一门功能强大的高级脚本语言,它的强大不仅表现在其自身的功能上,而且还表现在其良好的可扩展性上,正因如此,Python已经开始受到越来越多人的青睐,并且被屡屡成功地应用于各类大型 ...

最新文章

  1. [转]expect实现ssh自动交互
  2. android:imeOptions属性
  3. Tensorboard on Server
  4. mysql什么隔离级别最好_面试必问的 Mysql 四种隔离级别,看完吊打面试官
  5. socket python 收 发 队列 线程_对于Python中socket.listen()与多线程结合的困惑?
  6. python布尔系列_python – 获取pandas布尔系列为True的索引列表
  7. setBackgroundResource的一个问题
  8. 3d饼图 vue_怎么实现一个3d翻书效果
  9. 服务器不显示内存条,服务器检测不到内存条
  10. go sublime mysql_Sublime text 3开发GO
  11. 基于HMM的连续小词量语音识别 - 模拟技术 - 电子发烧友网
  12. 模板解压下来是php文件,smarty模板解压完将libs目录放到哪?
  13. 安全教育平台账号后四位_安全教育平台登录账号是什么?
  14. java工具类-Java对象转换成Map
  15. mysql 添加一列_如何使用mysql在建好的表中添加一列
  16. Android Studio 制作微信界面 上
  17. 计算机视觉论文doc,计算机视觉论文.doc
  18. 利用python可视化散点图及其计算欧式距离分析相关性
  19. 公网IP TCP服务器调试
  20. AMAZINGPANDAVERSE打造2.0元宇宙生态的能量杠杆

热门文章

  1. 海量数据拆分到nosql系统的一种方案
  2. HDU 2993 MAX Average Problem(斜率优化DP)
  3. 蓝桥杯之最大体积(数论+完全背包)
  4. android ndk怎样加载o文件_在Android中使用TFLite c++部署
  5. php长传文件到数据库,php上传文件并存储到mysql数据库的简单示例
  6. 一个顾客买了价值x元的商品(C语言)
  7. 计算机入门模拟试题abcd,计算机一级计算机基础及WPSOffice应用考前模拟试题及答案(7)...
  8. Java学习笔记_方法
  9. 一文带你学会 UML--用例图
  10. POJ 2230 Watchcow 欧拉回路的DFS解法(模板题)