zoukankan      html  css  js  c++  java
  • python调用c++

    Python C/C++ 使用ctypes编写拓展

    ctypes 是一个Python 标准库中的一个库.为了实现调用 DLL,或者共享库等C数据类型而设计.它可以把这些C库包装后在纯Python环境下调用.本教程是在MAC下进行的

    C++代码

    #include <stdio.h>
    #ifdef __cplusplus 
        #define XETR extern "C"
    #else
        #define XETR
    #endif   
    
    #ifdef _WIN32
        #define LIB XETR __declspec(dllexport)
    #else
        #define LIB XETR
    #endif
    
    LIB  void CtypesDemo(const wchar_t *str,int x,int y){
        printf("Cpp %ls %d
    ",str,x+y);
    }        
    

    因为系统不同,调用方式不同
    _WIN32:表示win32和win64
    __declspec(dllexport)用于Windows中的动态库中,声明导出函数、类、对象等供外面调用。
    extern "C" 的作用是让 C++ 编译器将 extern "C" 声明的代码当作 C 语言代码处理,可以避免 C++ 因符号修饰导致代码不能和C语言库中的符号进行链接的问题。

    将C++文件编译成so文件

    g++ -fPIC -shared -o ctypes ctypes.cpp
    

    windows用户可以使用Visual studio 2015编译生成dll文件。
    在mac和linux没有dll文件,一般都是so文件。

    Python代码调用

    from  ctypes import *
    lib=CDLL("ctypes")
    lib.CtypesDemo("公众号:Python学习开发",4,5)
    

    总结

    关于ctype是的基本用法大概就这么多,实际上在编写Python拓展库的时,如果要最终生成Python模块并导入使用,就要遵循Python API进行编写,所有的函数定义都是遵循一定的规则,关注这部分内容,目前也已经写完,正在修改中,后续将会发布,敬请关注!

  • 相关阅读:
    推荐一款稳定快速免费的前端开源项目 CDN 加速服务
    MySQL限时解答
    OneProxy的功能与限制
    MySQL浮点计算存在的问题与解决方案
    DAS、SAN、NAS的区别
    气质
    受制于人
    mysqlbinlog flashback 5.6完全使用手册与原理
    Innodb引擎 compact模式下元组的磁盘存储结构
    数据迁移程序
  • 原文地址:https://www.cnblogs.com/c-x-a/p/11945713.html
Copyright © 2011-2022 走看看