SWIG快速入门_第1页
SWIG快速入门_第2页
SWIG快速入门_第3页
SWIG快速入门_第4页
SWIG快速入门_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、SWIG快速入门SWIGSWIG 是一个非常优秀的开源工具,支持您将 C/C+ 代码与任何主流脚本语言相集成。此外,它向更广泛的受众公开了基本代码,改善了可测试性,让您的 Ruby 代码库某部分能快速写出高性能的 C/C+ 模块。SWIGArpan Sen, 独立作家Arpan Sen 是致力于电子设计自动化行业的软件开发首席工程师。他使用各种 UNIX 版本(包括 Solaris、SunOS、HP-UX 和 IRIX)以及 Linux 和 Microsoft Windows 已经多年。他热衷于各种软件性能优化技术、图论和并行计算。Arpan 获得了软件系统硕士学位。SWIG C 和 C+ 被

2、公认为(理当如此)创建高性能代码的首选平台。对开发人员的一个常见要求是向脚本语言接口公开 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 代码添加扩展或

3、将现有的模块替换为高性能的替代模块 提供使用脚本环境对代码执行单元和集成测试的能力 使用 TK 开发一个图形用户接口并将它与 C/C+ 后端集成 此外,与 GNU Debugger 每次都需触发相比,SWIG 要容易调试得多。SWIGRuby 环境变量SWIG 生成包装器 C/C+ 代码时需要 ruby.h 来保证进行正确的编译。在您的 Ruby 安装中检查 ruby.h:一种建议的做法是将环境变量 RUBY_INCLUDE 指向包含 ruby.h 的文件夹,将 RUBY_LIB 指向包含 Ruby 库的路径。SWIGSWIG 接口文件语法是 C 的一个超集。SWIG 通过一个定制 C 预处理

4、器处理它的输入文件。此外,接口文件中的 SWIG 操作通过一个百分比符号 (%) 后跟的特殊的指令(%module、%constant 等)来控制。SWIG 接口还允许您定义以 % 开头和以 % 结束的信息块。% 和 % 之间的所有内容会原封不动地复制到生成的包装器文件中。SWIG可通过指定 %module rubytest:test34:example,定义一个深度嵌套模块 rubytest:test34:example。另一个选项是将 %module example 放在接口代码中,在命令行添加 rubytest:test34 作为它的前缀,如下所示:SWIGSWIG 接口文件必须以 %m

5、odule 声明开头,例如 %module module-name,其中 module-name 是目标语言扩展模块的名称。如果目标语言是 Ruby,这类似于创建一个 Ruby 模块。可以提供命令行选项 module module-name-modified 来改写模块名称:在本例中,目标语言模块名称为(或许您已猜到)module-name-modified。现在,让我们看看常量。SWIG 开始学习 SWIG 的最简单方式是在接口文件中声明某个 C 函数,在某个源文件中定义它,在创建共享库时链接相应的目标文件。第一个示例展示了计算一个数的阶乘的函数: %module test unsigned long factorial(unsigned long); 以下是我编译为 factorial.o 并在创建 test.so 时链接的 C 代码: unsigned long factorial(unsigned long n) return n = 1 ? 1 : n * factorial(n - 1);SWIG 清单 6. 从 Ruby 测试代码 irb(main):001:0 require test = true irb(main):002:0 Test.factorial(11) = 3991680

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论