python扩展之C++篇
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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内工程都有效
以上是关于python扩展之C++篇的主要内容,如果未能解决你的问题,请参考以下文章