ruby-ffi https://wiki.github.com/ffi/ffi
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.
- 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
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:
- the samples/ folder
- the examples on the wiki
- the projects using FFI listed on this page (https://wiki.github.com/ffi/ffi/projects-using-ffi)
- You need a sane building environment in order to compile the extension.
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
See LICENSE file.
The following people have submitted code, bug reports, or otherwide contributed to the success of this project:
- Alban Peignier [email protected]
- Aman Gupta [email protected]
- Andrea Fazzi [email protected]
- Andreas Niederl [email protected]
- Andrew Cholakian [email protected]
- Antonio Terceiro [email protected]
- Brian Candler [email protected]
- Brian D. Burns [email protected]
- Bryan Kearney [email protected]
- Charlie Savage [email protected]
- Chikanaga Tomoyuki [email protected]
- Hongli Lai [email protected]
- Ian MacLeod [email protected]
- Jake Douglas [email protected]
- Jean-Dominique Morani [email protected]
- Jeremy Hinegardner [email protected]
- Jesús García Sáez [email protected]
- Joe Khoobyar [email protected]
- Jurij Smakov [email protected]
- KISHIMOTO, Makoto [email protected]
- Kim Burgestrand [email protected]
- Lars Kanis [email protected]
- Luc Heinrich [email protected]
- Luis Lavena [email protected]
- Matijs van Zuijlen [email protected]
- Matthew King [email protected]
- Mike Dalessio [email protected]
- NARUSE, Yui [email protected]
- Park Heesob [email protected]
- Shin Yee [email protected]
- Stephen Bannasch [email protected]
- Suraj N. Kurapati [email protected]
- Sylvain Daubert [email protected]
- Victor Costan
- [email protected]
- ctide [email protected]
- emboss [email protected]
- hobophobe [email protected]
- meh [email protected]
- postmodern [email protected]
- [email protected] [email protected]
- Wayne Meissner [email protected]