2013-11-02 2 views
0

Ruby FFI에서 Fiddle으로 전환하려고합니다. 이제 Ruby std lib에 포함됩니다.ruby에서 배열 포인터를 다루는 방법 Fiddle

꽤 문서화되지 않았습니다. 배열과 포인터를 다루는 방법을 알아 내는데 어려움을 겪고 있습니다. 특히, 어떻게 내가이 같은 C 함수에 바이올린 인터페이스를 작성할 수 있습니다 내가 배열에 대한 포인터를 만들 수있는 방법을 다음

module Test 
    extend Fiddle::Importer 
    dlload './lib/libTest.dylib' 
    extern 'void my_func(double *, size_t)' 
end 

그러나 루비로

void my_func(double *, size_t len) 

매핑 꽤 간단합니다 , 첫 번째 인수로 전달 될? 감사합니다.

답변

0

당신은 루비에서 C 배열과이 배열의 포인터를 빌드하는 것을 의미합니까?

free = Fiddle::Function.new(Fiddle::RUBY_FREE, [TYPE_VOIDP], TYPE_VOID) 
p = Pointer.malloc(SIZEOF_DOUBLE*len, free) 

과 같이 전화 :

이 같은 시도 할 수이 메모리 블록을 사용하지 않을 때

my_func(p,len) 

루비 GC는 무료 함수를 호출합니다.

관련 문제