Oh!Coder

Coding Life

Ruby-ffi Gem简介

| Comments

今天介绍的这个gem是关于对ruby语言进行扩展的一个library。

简介

Ruby-FFI是一个可编程加载的动态库,内部对方法进行绑定,用Ruby代码进行调用。用Ruby-FFI扩展之后在Ruby和JRuby下不用做任何修改。对于为什么要在以后的扩展中使用Ruby-FFI,可以参考一篇对应的wiki

特性

  • 更加易用的DSL
  • 支持所有C语言原生类型
  • 支持C语言struct类型(包括嵌套),enum类型以及所有变量
  • C语言回调ruby方法
  • 自动原生内存垃圾回收

使用概述

1
2
3
4
5
6
7
8
9
require 'ffi'

module MyLib
  extend FFI::Library
  ffi_lib 'c'
  attach_function :puts, [:string], :int
end

MyLib.puts 'Hello, World using libc!'

基本需求

为了能够顺利通过编译扩展。你需要一个最简化的编译环境:

  • 一个C编译器(比如 OSX下的Xcode,跨平台的gcc等等)
  • libffi开发库-通常在libffi-dev或libffi-devel下

安装

1
[sudo] gem install ffi

或者直接从Github安装:

1
2
3
git clone git://github.com/ffi/ffi.git
cd ffi
rake gem:install

更多

更多更新的参考资料可见原文档

Comments