Skip to content

stoune/ffi

 
 

Description

Ruby-FFI is a ruby extension for programmatically loading dynamic libraries, binding functions within them, and calling those functions from Ruby code. Moreover, a Ruby-FFI extension works without changes on Ruby and JRuby. Discover why should you write your next extension using Ruby-FFI here.

Features/problems

  • Intuitive DSL
  • Supports all C native types
  • C structs (also nested), enums and global variables
  • Callbacks from C to ruby
  • Automatic garbage collection of native memory

Synopsis

require 'ffi'

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

MyLib.puts 'Hello, World using libc!'

For less minimalistic and more sane examples you may look at:

Requirements

  • You need a sane building environment in order to compile the extension.

Installation

From rubygems:

[sudo] gem install ffi

or from the git repository on github:

git clone git:https://github.com/ffi/ffi.git
cd ffi
rake gem:install

License

See LICENSE file.

Credits

The following people have submitted code, bug reports, or otherwide contributed to the success of this project:

Packages

No packages published

Languages

  • C 42.8%
  • Shell 31.2%
  • Assembly 16.6%
  • Ruby 9.2%
  • C++ 0.2%