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

  • 相关阅读:
    HTML中的target(_self,_blank)用法总结
    实用且不花哨的js代码大全
    C#操作Excel文件暨C#实现在Excel中将连续多列相同数据项合并
    ASP.NET操作EXCEL
    sql分页存储过程(汇总)
    Jquery plugin(多文件上传)
    使用 Anthem.NET 的常见回调(Callback)处理方式小结
    NET开发人员必知的八个网站
    用jQuery合并表格中相同文本的相邻单元格(一)
    Sigma Grid(纯javascript开发的Ajax数据表格,超级强大)
  • 原文地址:https://www.cnblogs.com/Pymcj/p/6727978.html
Copyright © 2020-2023  润新知