码迷,mamicode.com
首页 > 编程语言 > 详细

python扩展之C++篇

时间:2017-04-18 15:48:29      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:double   net   book   htm   dll   blog   struct   变量类型   中间件   

首先贴几个帖子

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内工程都有效

 

python扩展之C++篇

标签:double   net   book   htm   dll   blog   struct   变量类型   中间件   

原文地址:http://www.cnblogs.com/Pymcj/p/6727978.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!