• SWIG 基本概念和入门


    C 和 C++ 被公认为(理当如此)创建高性能代码的首选平台。对开发人员的一个常见要求是向脚本语言接口公开 C/C++ 代码,这正是 Simplified Wrapper and Interface Generator (SWIG) 的用武之地。SWIG 允许您向广泛的脚本语言公开 C/C++ 代码,包括 Ruby、Perl、Tcl 和 Python。本文使用 Ruby 作为公开 C/C++ 功能的首选脚本接口。要理解本文,您必须具备 C/C++ 与 Ruby 方面的相应知识。

    SWIG 是一款不错的工具,可适合多种场景,其中包括:

    • 向 C/C++ 代码提供一个脚本接口,使用户更容易使用
    • 向您的 Ruby 代码添加扩展或将现有的模块替换为高性能的替代模块
    • 提供使用脚本环境对代码执行单元和集成测试的能力
    • 使用 TK 开发一个图形用户接口并将它与 C/C++ 后端集成

    此外,与 GNU Debugger 每次都需触发相比,SWIG 要容易调试得多。

    使用 SWIG 编写 Hello World

    作为输入,SWIG 需要一个包含 ANSI C/C++ 声明和 SWIG 指令的文件。我将此输入文件称为 SWIG 接口文件。一定要记住,SWIG 仅需要足够生成包装器代码的信息。该接口文件通常具有 *.i 或 *.swg 扩展名。以下是第一个扩展文件 test.i:

    1
    2
    %module test
    %constant char* Text = "Hello World with SWIG"

    使用 SWIG 运行此代码:

    1
    swig –ruby test.i

    第二个代码段中的命令行在当前文件夹中生成一个名为 test_wrap.c 的文件。现在,您需要在此 C 文件中创建一个共享库。以下是该命令行:

    1
    2
    bash$ gcc –fPIC –c test_wrap.c –I$RUBY_INCLUDE
    bash$ gcc –shared test_wrap.o –o test_wrap.so –lruby –L$RUBY_LIB

    就这么简单。您已准备就绪,那就触发交互式 Ruby shell (IRB),输入 require 'test_wrap' 来检查 Ruby Test 模块和它的内容。以下是扩展的 Ruby 端:

    1
    2
    3
    4
    5
    6
    irb(main):001:0> require 'test_wrap'
    => true
    irb(main):002:0> Test.constants
    => ["Text"]
    irb(main):003:0> Test:: Text
    => "Hello World with SWIG"

    SWIG 可用于生成各种语言扩展,只需运行 swig –help 检查所有的可用选项。对于 Ruby,可以输入 swig –ruby <interface file>;对于 Perl,可以使用 swig –perl <interface file>

    也可以使用 SWIG 生成 C++ 代码:只需在命令行使用 –c++ 即可。在前面的示例中,运行 swig –c++ –ruby test.i 会在当前文件夹中生成一个名为 test_wrap.cxx 的文件。

     

    参考文档:https://www.ibm.com/developerworks/cn/aix/library/au-swig/

  • 相关阅读:
    web.xml文件的作用
    GitHub上最火的40个Android开源项目
    iOS 开发者必不可少的 75 个工具,你都会了吗
    canvas小知识
    最全的PHP开发Android应用程序
    Android系统在超级终端下必会的命令大全(adb shell命令大全)
    Android adb shell命令大全
    如何制作和部署war包
    android学习视频(实战项目演练)
    s:iterator标签的使用
  • 原文地址:https://www.cnblogs.com/dylancao/p/9661163.html
Copyright © 2020-2023  润新知