我需要使用MacRuby(ruby-keychain)中的宝石,并且此宝石使用FFI。来自MacRuby的FFI?
但它看起来像FFI不能从MacRuby工作。
使用IRB控制台,它工作正常:
cobalt:~ charbon$ irb
irb(main):001:0> require 'ffi'
=> true
irb(main):002:0> module MyLib
irb(main):003:1> extend FFI::Library
irb(main):004:1> ffi_lib 'c'
irb(main):005:1> attach_function :puts, [ :string ], :int
irb(main):006:1> end
=> #<FFI::Function address=0x007fff8be0197b>
irb(main):007:0> MyLib.puts 'Hello, World using libc!'
Hello, World using libc!
但只要我切换到macirb控制台(一个由MacRuby的提供),它失败
cobalt:~ charbon$ macirb
irb(main):001:0> require 'ffi'
=> true
irb(main):002:0>
=> nil
irb(main):003:0> module MyLib
irb(main):004:1> extend FFI::Library
irb(main):005:1> ffi_lib 'c'
irb(main):006:1> attach_function :puts, [ :string ], :int
irb(main):007:0> end
NoMethodError: undefined method `ffi_lib' for MyLib:Class
宝石FFI安装在系统上
cobalt:~ charbon$ macgem list
*** LOCAL GEMS ***
corefoundation (0.1.4)
ffi (1.9.0)
ruby-keychain (0.1.1)
我已经搜索了所有我可以做的。
https://github.com/MacRuby/MacRuby/blob/master/lib/ffi.rb说FFI内置的MacRuby
发现几个岗位上同样的问题,但没有答案网(只放一个,没有足够的代表更多) https://github.com/kreynolds/phidgets-ffi/issues/4
希望有人能帮助!我正在使用OS X 10.8.3,ruby 1.9.3,macruby 1.9.2
Macruby的FFI实现落后于MRI宝石和jruby的不幸 –
你用'ffi'做什么? 'macruby'的优点是能够访问静态API,这意味着C函数,结构,不透明类型。 – jtomschroeder
在很短的时间内:试图让ruby-keychain工作。在短期内,使用看起来最近/完整的课程。在中期,更好地了解macruby和外部库。从长远来看,我们都会死掉(凯恩斯) – MichaelC