zoukankan      html  css  js  c++  java
  • 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内工程都有效

  • 相关阅读:
    微软面试题_中文字符串转换为数字
    微软面试题_3个字母的组合
    LeetCode Notes_#1031_两个非重叠子数组的最大和
    剑指Offer_#57-II_和为 s 的连续正数序列
    LeetCode Notes_#560 和为k的子数组
    LeetCode Notes_#84 柱状图中最大的矩形
    LeetCode Notes_#221 最大正方形
    LeetCode Notes_#146 LRU缓存机制
    码云团队开发项目拉取与推送
    vue父子组件的双向绑定
  • 原文地址:https://www.cnblogs.com/Pymcj/p/6727978.html
Copyright © 2011-2022 走看看