Subject:
[ruby-ffi] puts example fails in doze
From:
rogerdpack
Date:
12/11/09 4:58 PM
To:
ruby-ffi

in windows, this code fails:

require 'ffi'

module Hello
  extend FFI::Library
  attach_function 'puts', [:string], :int
end

Hello.puts("Hello, World")


thusly:
C:\dev\ruby\ruby-benchmark-suite\benchmarks\micro-benchmarks>ruby -v
test.rb
ruby 1.9.1p243 (2009-07-16 revision 24175) [i386-mingw32]
C:/installs/ruby-1.9.1-p243-tweaked/lib/ruby/gems/1.9.1/gems/
sane-0.11.0/lib/sane/hash_set_operators_bug_fix.rb:4: warning: method
redefined; discarding old -

        #<FFI::NotFoundError: Function 'puts' not found in [[current
process]]> Function 'puts' not found in [[current process]]
C:/installs/ruby-1.9.1-p243-tweaked/lib/ruby/gems/1.9.1/gems/ffi-0.5.4-
x86-mingw32/lib/ffi/library.rb:77:in `attach_function'
        raise FFI::NotFoundError.new(cname.to_s, ffi_libraries.map { |
lib| lib.name }) unless invoker
test.rb:5:in `<module:Hello>'
        attach_function 'puts', [:string], :int
test.rb:3:in `<main>'
        module Hello

<main>: Function 'puts' not found in [[current process]]
(FFI::NotFoundError)


Is this expected? Is there an example function that should work cross
platform?
-r