Skip to content
This repository

Merge pull request #300 from larskanis/fix-spec-for-mingw32

Fix test case so that it works on x86-mingw32 platform.
latest commit 2ae64ccf11
Thomas E Enebo enebo authored
Octocat-spinner-32 bench Add to_str and to_ptr benchmarks
Octocat-spinner-32 ext Fix invalid memory access caused by double dereferencing mapped types…
Octocat-spinner-32 gen Keep a log of generated types.conf files
Octocat-spinner-32 lib cleanup minor typos
Octocat-spinner-32 libtest Licensing audit. Restore BSD license text from files where it was mis…
Octocat-spinner-32 nbproject Add custom data converters for parameter and return types
Octocat-spinner-32 samples Fix qsort example for 64bit
Octocat-spinner-32 spec Merge pull request #300 from larskanis/fix-spec-for-mingw32
Octocat-spinner-32 .gitignore Ignore YARD-generated files
Octocat-spinner-32 .travis.yml Am I doing this right yet?
Octocat-spinner-32 .yardopts Don’t explicitly state markdown markup in YARD options
Octocat-spinner-32 COPYING Switch license to BSD throughout codebase. See #288.
Octocat-spinner-32 Gemfile Update Gemfile
Octocat-spinner-32 Gemfile.lock Update Gemfile
Octocat-spinner-32 LICENSE Switch license to BSD throughout codebase. See #288.
Octocat-spinner-32 LICENSE.SPECS Change licensing of the specs to the same license as Rubyspec
Octocat-spinner-32 Switch license to BSD throughout codebase. See #288.
Octocat-spinner-32 Rakefile Tweaks to get java gem building.
Octocat-spinner-32 ffi.gemspec Remember kids...when you rush things you end up putting weird errant …

ruby-ffi Build Status


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 you should write your next extension using Ruby-FFI.


  • 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

MyLib.puts 'Hello, World using libc!'

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


You need a sane building environment in order to compile the extension. At a minimum, you will need:

  • A C compiler (e.g. Xcode on OSX, gcc on everything else)
  • libffi development library - this is commonly in the libffi-dev or libffi-devel


From rubygems:

[sudo] gem install ffi

or from the git repository on github:

git clone git://
cd ffi
rake gem:install


The ffi library is covered by the BSD license, also see the LICENSE file. The specs are shared with Rubyspec and are licensed by the same license as Rubyspec, see the LICENSE.SPECS file.


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

Something went wrong with that request. Please try again.