1

我需要使用来自 MacRuby(ruby-keychain)的 gem,这个 gem 使用 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

gem FFI 安装在系统上

cobalt:~ charbon$ macgem list
*** LOCAL GEMS ***
corefoundation (0.1.4)
ffi (1.9.0)
ruby-keychain (0.1.1)

我已经搜索了所有我能找到的。

希望有人能帮忙!我正在使用 os X 10.8.3、ruby 1.9.3、macruby 1.9.2

4

1 回答 1

0

改用 phidgets_native gem - 没有 FFI 要求,它在 OSX 上运行良好(事实上它是在它上面开发的)。它更新、更快、更稳定。(加上它支持手臂)

于 2013-08-27T01:23:53.563 回答