2013-07-26 6 views
1

Мне нужно использовать драгоценный камень от MacRuby (рубиновый брелок), и этот драгоценный камень использует FFI.FFI от MacRuby?

Но похоже, что 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

Реализация FFI от Macruby отстает от того, что делает MRI gem и jruby, к сожалению, –

+0

Что вы делаете с 'ffi'? Красота «macruby» - это возможность доступа к статическим API, что означает функции C, структуры, непрозрачные типы. – jtomschroeder

+0

в очень короткий срок: пытается получить рубиновый брелок. В краткосрочной перспективе используйте класс, который казался самым последним/полным. В среднесрочной перспективе лучше понять макроуры и внешние библиотеки. В долгосрочной перспективе все мы будем мертвы (Keynes) – MichaelC

ответ

0

Вместо этого попробуйте вместо этого фиджетечную карту - нет требования FFI, и она отлично работает на OSX (на самом деле она была разработана на нем). Он новее, быстрее и гораздо более стабилен. (Плюс он поддерживает руку)

+0

Вы имеете в виду https://github.com/brighton36/phidgets_native? «Эта библиотека представляет собой набор классов для использования с превосходными устройствами считывания и контроля USB, доступными для продажи на сайте phidgets.com». ?? – MichaelC

+0

yep - это тот. Надеюсь, это сработает для вас. Если нет - дайте мне знать. –

+0

Я понял, как это связано с моим вопросом, который касается обложек ключей и FFI – MichaelC