测试环境: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. Qt中创建excel文件
  2. 比较创建几种线程的方式
  3. php 去掉不可见字符串,php删除不可见的Unicode字符
  4. 外媒:伊朗政府封锁加密通讯应用Signal
  5. 【C++】判断两个vector是否相等~直接用“==”呀~
  6. 【最新】2021年自然语言处理 (NLP) 算法学习路线!
  7. 【渝粤教育】国家开放大学2018年秋季 0053-22T移动通信技术与移动通信设备 参考试题
  8. 帧数达不到144用144hz_专业FPS玩家讲解:60Hz与144Hz刷新率的问题
  9. LeetCode常见报错解释
  10. 19|雨季来临,聊些轻松的吧
  11. python复合赋值语句语法_复合结构的赋值语句理解
  12. 从强化学习的角度看alphago与MCTS
  13. SDOI 2014 数表 题解
  14. WPS如何并排放置两张图片_动图演示如何制作XRD叠图与PDF卡线图
  15. 现在国内的网站用户行为数据分析工具都有哪些?-宋星
  16. 两种常用癌症免疫疗法CAR-T与TCR-T的联系和区别
  17. 金士顿固态硬盘不认盘问题的开盘修复完整过程
  18. componentWillUnmount父子组件触发先后
  19. termux配置python安装kali_安卓用termux安装kali linux教程
  20. (NSMenu,NSMenuItme)如何在菜单栏添加新的菜单

热门文章

  1. JS基础篇--函数声明与定义,作用域,函数声明与表达式的区别
  2. 从情报分析的高度来看APT***
  3. Resco Photo Viewer for WinCE6.0
  4. 在js在页面中添加百度统计代码
  5. bl小说里面有个机器人管家_丰田开发机器人管家原型机 像蝙蝠一样挂在天花板上...
  6. c语言管理系统的数据存放,编的学生成绩管理系统 从文件中读取保存数据总会多读入一组乱码数据...
  7. python模拟登录页面下载_Python爬虫实战入门四:使用Cookie模拟登录——获取电子书下载链接...
  8. 双流棠湖中学怎么样_2020年双流中学和棠湖中学哪个好?
  9. bio nio aio区别_8分钟深入浅出搞懂BIO、NIO、AIO
  10. stream() 求和_Java教程:Java8统计list中指定属性的最大、最小、平均值、求和