2013-07-26 49 views
1

我需要使用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) 

我已经搜索了所有我可以做的。

希望有人能帮助!我正在使用OS X 10.8.3,ruby 1.9.3,macruby 1.9.2

+0

Macruby的FFI实现落后于MRI宝石和jruby的不幸 –

+0

你用'ffi'做什么? 'macruby'的优点是能够访问静态API,这意味着C函数,结构,不透明类型。 – jtomschroeder

+0

在很短的时间内:试图让ruby-keychain工作。在短期内,使用看起来最近/完整的课程。在中期,更好地了解macruby和外部库。从长远来看,我们都会死掉(凯恩斯) – MichaelC

回答

0

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

+0

你的意思是https://github.com/brighton36/phidgets_native? “这个库是一套用于在phidgets.com上销售的优秀USB传感和控制器设备的类。” ?? – MichaelC

+0

是的 - 就是那个。希望这对你有用。如果没有 - 让我知道。 –

+0

我知道它是如何与我的问题相关的,这是关于钥匙串包装和FFI – MichaelC