`
qwjcool
  • 浏览: 68955 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

使用SWIG和Python对C/C++进行单元测试(二)

阅读更多

 SWIG本质上是一个编译器,在最初的1.1版本中,它还不是很完善,有很多的C/C++指令以及数据类型不支持,而到了现在的1.3版,它基本上已经能够支持全部的C/C++特性。

内容如下:

 

  • Full C99 preprocessing.
  • All ANSI C and C++ datatypes.
  • Functions, variables, and constants.
  • Classes.
  • Single and multiple inheritance.
  • Overloaded functions and methods.
  • Overloaded operators.
  • C++ templates (including member templates, specialization, and partial specialization).
  • Namespaces.
  • Variable length arguments.
  • C++ smart pointers.

现在唯一不支持的是内部类,它也将在今后的版本中得到支持。

 

简单数据类型

 

整型:swig会把下列数据类型转换成脚本语言中的整型。

 

  1. int
  2. short
  3. long
  4. unsigned
  5. signed
  6. unsigned  short
  7. unsigned  long
  8. unsigned  char
  9. signed   char
  10. bool

另外,虽然swig支持long long类型,但是在一些不支持long long的脚本语言中,比如Tcl、Perl5,long long会被转换成string类型,所以不能用来进行计算操作。

 

浮点型:

  1. float
  2. double

很多脚本中都是直接用double来表示浮点型。另外swig不支持不太被使用的long double类型

 

字符串类型:

char在脚本语言中被映射成一个长度为1的NULL结尾的ASCII字符串。

char*则被映射成一个NULL结尾的8-bit字符串。

另外,swig对wchar_t(Unicode)支持不太好,但一般采用UTF-8的形式来处理

 

全局变量

example.i

 

example_test.py

 

分享到:
评论

相关推荐

    swig工具,C/C++到python, tcl 的接口

    SWIG工具,C/C++到python、tcl的接口 SWIG(Simplified Wrapper and Interface Generator)是一种开源的接口生成工具,可以将C/C++语言与各种脚本语言集成,包括Python、Tcl、Perl、 Ruby等。SWIG的主要功能是生成...

    基于Python和C_C++的分布式计算架构.pdf

    为了建立一个综合各方优点的分布式编程架构,本文提出了半自动部署的分布式计算架构,该架构使用SWIG技术桥接Python和C/C++的原子算法,利用RPYC进行节点间的传递同步。这一架构不仅保留了Python作为脚本语言的易用...

    Python C++ and SWIG

    通过使用 SWIG (Simplified Wrapper and Interface Generator) 等工具,可以在保持 Python 的灵活性、生产力和易于维护的同时,利用 C 或 C++ 的高性能部分。这种方法使得 Python 程序员可以在需要的地方调用 C 或 ...

    python调用C/C++ demo

    本篇将详细介绍这两个示例`pyton_C`和`python_C++`所展示的Python调用C/C++的方法。 1. Python调用C:通过`ctypes`库 `ctypes`是Python的标准库之一,它允许我们直接调用C语言编写的动态链接库(.dll或.so文件)。...

    SWIG 公开 C/C++ 代码,包括 Ruby、Perl、Tcl、C# 和 Python

    C 和 C++ 被公认为...SWIG 允许您向广泛的脚本语言公开 C/C++ 代码,包括 Ruby、Perl、Tcl 和 Python。本文使用 Ruby 作为公开 C/C++ 功能的首选脚本接口。要理解本文,您必须具备 C/C++ 与 Ruby 方面的相应知识。

    cmake_c++_python_swig

    "cmake_c++_python_swig"的主题涵盖了解决方案,即如何利用CMake管理和构建C++项目,同时通过SWIG工具生成Python接口,使得C++代码可以方便地在Python环境中使用。这种组合使得开发者能够利用C++的强大功能,同时...

    python加载自己写的c/c++程序

    2. **SWIG(Simplified Wrapper and Interface Generator)**:SWIG是一个工具,可以自动生成Python接口代码,使得Python可以调用C/C++的函数和类。用户只需要为C/C++代码创建一个接口文件,SWIG会自动生成Python...

    SWIG 源码(C/C++与其他语言的粘合剂)

    SWIG是个帮助使用C或者C++编写的软件能与其它各种高级编程语言进行嵌入联接的开发工具。SWIG能应用于各种不同类型的语言包括常用脚本编译语言例如Perl, PHP, Python, Tcl, Ruby and PHP。支持语言列表中也包括非脚本...

    基于SWIG的Python仪器驱动封装技术.zip

    - **运行SWIG生成接口代码**:使用SWIG工具对.i文件进行处理,生成Python所需的.c或.cpp文件以及Python模块的头文件。 - **编译C/C++代码**:将生成的.c或.cpp文件与原始的C/C++驱动一起编译成动态链接库(.dll或....

    swig 打包C++ python应用

    swig 打包C/C++程序;供python调用。 本软件操作平台windows 10 Vs2017;python3.8; 主要讲述swig vs配置,测试用例。 主要包含常量,变量,指针,结构体定义及运用。

    linux 下 python调用c或者c++编写的代码使用案例

    这个过程包括创建SWIG接口文件、编译C/C++源码、生成Python模块和导入模块到Python中。 3. **使用Cython**: Cython是一种静态类型的Python方言,它可以编译为C扩展模块,从而提升Python代码的执行效率。如果你的...

    using swig to bind c++ to python

    本文将通过一系列小型C++示例来探讨SWIG如何支持C++的高级特性,例如模板和异常处理,并介绍如何使用SWIG创建Python绑定。 #### SWIG概述 SWIG最初是由David Beazley开发的,旨在简化C/C++代码与解释型语言之间的...

    swig的学习以及国密的python封装.zip_python 国密_swig的学习以及国密的python封装_国密

    SWIG是一个工具,它允许C/C++代码与多种高级语言,如Python,进行交互。国密是一系列由我国制定的密码算法标准,包括SM2、SM3和SM4等,用于保障信息安全。 在描述中提到的“swig的学习”,是指学习如何使用SWIG来...

    SWIG 2.0.11 C/C++接入各种不同语言的接口程序

    In a nutshell, SWIG is a compiler that takes C/C++ declarations and creates the wrappers needed to access those declarations from other languages including including Perl, Python, Tcl, Ruby, Guile, ...

    swig使用手册

    在处理简单C声明方面,SWIG提供了基本类型处理、全局变量和常量的支持,确保C/C++的简单数据类型可以直接在脚本语言中使用。而对于复杂类型如结构体和类,则通过代理类的方式实现封装,确保了面向对象特性的完全兼容...

    基于Python和C_C++的分布式计算架构.zip

    4. Python与C/C++的结合:Python可以通过Cython、SWIG或Boost.Python等工具与C/C++进行互操作,使得Python代码能够调用C/C++编写的高效库。这种方式在保持Python的易用性的同时,利用C/C++的高性能处理关键计算部分...

    从C++导出类到Python

    在IT领域,跨语言编程是一种常见的需求,它允许我们利用不同语言...通过理解Python C API或使用SWIG,你可以构建高性能的Python应用,同时享受C++的底层控制。在实际项目中,这通常是提高程序性能和扩展性的有效策略。

    SWIG Specification

    SWIG对于支持C/C++语言特性也有一定的要求,比如它能够处理函数、变量、常量、结构体、类等多种C/C++语言元素,但它也有局限性,比如对C++模板和异常支持有限。 SWIG文档中还包含特定于操作系统的安装和使用指导,...

Global site tag (gtag.js) - Google Analytics