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++篇的主要内容,如果未能解决你的问题,请参考以下文章

C++混合编程之idlcpp教程Python篇

运维学python之爬虫中级篇MongoDB

C++混合编程之idlcpp教程Python篇

C++混合编程之idlcpp教程Python篇

python调c++之caffe实现

Visual Studio Code 教程之————入门篇