python扩展之C++篇

首先贴几个帖子

https://eastlakeside.gitbooks.io/interpy-zh/content/c_extensions/swig.html

http://blog.csdn.net/a8572785/article/details/10427521

http://blog.csdn.net/marscrazy_90/article/details/14045683

混合编程能够在性能和开发速度上有很好的平衡,今天学习了python调用c++函数的三种方法

python使用C++ 的扩展库,有三种方法:1.使用ctype 2.使用swgi 3.使用python/c API

前面两种方法对源文件没有进行破坏,而最后有一种方法需要使用python.h 里面的python struct,对所有的代码进行重新编码,编出来的代码可以叫做cython,这种方法最通用,代码效率也最高

第一种方法使用了ctype加载dll文件,但对有些变量类型得重新申明,例如float,double,如果调用自己

第二种方法相当于使用swgi的库对源文件生成中间件 *.i,再通过c++编译生成对应的dll文件,将dll文件更名为_*.pyd 然后将_*.pyd 和_.py文件拷贝至python项目目录,即可导入使用。

第三种方法,重新对源代码进行编码

下面详细介绍在  python3.5+vs2015+swig3.0.12+win10 64位系统 环境下的 第一种 和 第二种方法

第一中方法,参考http://blog.csdn.net/marscrazy_90/article/details/14045683

第二种方法,参考 http://blog.csdn.net/a8572785/article/details/10427521,但是记住在编译dll的时候选release  x64 并且在工程项目-->属性-->c++-->链接器-->输入项中 填入python35.lib python3.lib等库文件名

同时在添加库文件的时候 有两种方法,第一种是在项目属性的vc++目录 中添加包含目录和库目录  并在工程项目-->属性-->c++-->链接器-->输入-->附加依赖项项中 填入库文件名

第二种方法是在C/C++目录里面 添加

添加工程的头文件目录:工程---属性---配置属性---c/c++---常规---附加包含目录:加上头文件存放目录。

B、添加文件引用的lib静态库路径:工程---属性---配置属性---链接器---常规---附加库目录:加上lib文件存放目录。
C  然后添加工程引用的lib文件名:工程---属性---配置属性---链接器---输入---附加依赖项:加上lib文件名。

这两种方法有什么不同,据说第一种方法是添加后 只对该项目有效,第二种方法是添加后整个VS内工程都有效

时间: 2024-10-22 20:06:34

python扩展之C++篇的相关文章

运维学python之爬虫高级篇(六)scrapy模拟登陆

上一篇介绍了如何爬取豆瓣TOP250的相关内容,今天我们来模拟登陆GitHub. 1 环境配置 语言:Python 3.6.1 IDE: Pycharm 浏览器:firefox 抓包工具:fiddler 爬虫框架:Scrapy 1.5.0 操作系统:Windows 10 家庭中文版 2 爬取前分析 分析登陆提交信息分析登陆信息我使用的是fiddler,fiddler的使用方法就不作介绍了,大家可以自行搜索,首先我们打开github的登陆页面,输入用户名密码,提交查看fiddler获取的信息,我这

Python开发【第一篇】:目录

本系列博文改编自武沛齐老师的原创博文,主要包含  Python基础.前端开发.Web框架.缓存以及队列等内容 ,用于学习记录成长!!! Python开发[第一篇]:目录 Python开发[第二篇]:初识Python

python扩展实现方法--python与c混和编程

Reference: http://www.cnblogs.com/btchenguang/archive/2012/09/04/2670849.html python 头文件在的位置:/usr/include/python2.7                                  /usr/local/include/python2.7 前言(更新:更方便易用的方式在http://www.swig.org/tutorial.html) 大部分的Python的扩展都是用C语言写的,

python 面向对象(进阶篇)

上一篇<Python 面向对象(初级篇)>文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使用(可以讲多函数中公用的变量封装到对象中) 对象,根据模板创建的实例(即:对象),实例用于调用被包装在类中的函数 面向对象三大特性:封装.继承和多态 本篇将详细介绍Python 类的成员.成员修饰符.类的特殊成员. 类的成员 类的成员可以分为三大类:字段.方法和属性 注:所有成员中,只有普通字段的内容保存对象

Python第一周基础篇

<感言:首先感谢alex老师精彩课程,第一周的第一天,随着金角大王的豪言壮语般的心灵鸡汤完美收场.此刻坐在电脑前的我仍是热血澎湃,下定决心好好跟着大王一起学好python> ----祝老师教师节快乐                                      Python第一周基础篇 博文结构: --1--python2.*与python3.*主要区别 --2--python安装与配置 --3--PyCharm开发工具的安装与配置 --4--变量的定义 --5--注释的使用 --

vs2013在图像处理中的应用(7):开发Python扩展

快乐虾 http://blog.csdn.net/lights_joy/(QQ群:Visual EmbedLinux Tools 375515651) 欢迎转载,但请保留作者信息 很久没有摸图像处理的东西了,近期刚好需要有此需求,希望能够有一个比较好用的开发环境.在学校的时候做图像处理一直用的是matlab,不过现在正好在做VELT的开发,尝试用vs2013+python构造一个适合于自己用的开发环境. 在图像处理中,虽然已经可以用python操纵opencv完成一些算法,但总免不了需要自己写一

window下python 扩展库安装 使用第三方镜像源

0.前言 由于python的官方镜像位于国外,若使用pip或者easy_install安装第三方插件时或许会被限制,甚至连easy_install或pip也无法安装,例如在windows环境下运行ez_setup.py 安装easy_install,可能遇到下图这样尴尬的情况. 图1 运行ez_setup.py失败 遇到这种问题可以”转战“国内的第三方镜像,问题便可迎刃而解.例如豆瓣镜像——http://pypi.douban.com/simple/ 1.安装easy_install 先安装ea

python基础:python扩展包的安装方式

python扩展包有三种安装方式: 1. pip安装方式.python3默认自带pip,无需另外安装:在python2.7版本上默认为easy_install安装工作进行安装,如果需要使用pip安装,需要自行下载安装(可以从http://www.pip-installer.org网站下载). 2. 系统自带的包安装管理工具. 3. 从源代码安装. 使用pip安装:在command命令行中输入:pip install 包名,例如:pip install flask 使用pip安装指定版本:在com

Python学习笔记基础篇——总览

Python初识与简介[开篇] Python学习笔记——基础篇[第一周]——变量与赋值.用户交互.条件判断.循环控制.数据类型.文本操作 Python学习笔记——基础篇[第二周]——解释器.字符串.列表.字典.主文件判断.对象 Python学习笔记——基础篇1[第三周]——set集合 Python学习笔记——基础篇2[第三周]——计数器.有序字典.元组.单(双)向队列.深浅拷贝.函数.装饰器 Python学习笔记——基础篇[第四周]——迭代器&生成器.装饰器.递归.算法.正则表达式 Python