2013-07-26 3 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'의 장점은 C 함수, 구조, 불투명 한 타입을 의미하는 정적 인 API에 접근 할 수 있다는 것입니다. 매우 짧은 기간에 – jtomschroeder

+0

: 루비 키 체인을 작동 시키려고합니다. 단기간에 가장 최근/완성 된 것처럼 보이는 수업을 사용하십시오. 중간에, macruby 및 외부 라이브러리에 대해 더 잘 이해하십시오. 장기적으로 우리 모두는 죽을 것이다. (Keynes) – MichaelC

답변

0

대신 phidgets_native gem을 사용해보십시오. FFI 요구 사항이 없으며 OSX에서 제대로 실행됩니다. 사실 실제로 개발되었습니다. 더 새롭고, 빠르고, 훨씬 안정적입니다. (플러스 팔을 지원합니다)

+0

당신은 https://github.com/brighton36/phidgets_native를 의미합니까? "이 라이브러리는 우수한 USB 감지 및 컨트롤러 장치를 phidgets.com에서 판매 할 수있는 클래스 세트입니다." ?? – MichaelC

+0

예 - 그 중 하나입니다. 잘하면 그게 당신을 위해 작동합니다. 그렇지 않다면 알려주세요. –

+0

필자는 키 체인 래퍼 및 FFI에 관한 내 질문과 관련되어 있음을 이해합니다. – MichaelC