2012-05-18 3 views
3

나는 구조를MacRuby에서 C 포인터를 만드는 방법은 무엇입니까?

int CPhidget_getSerialNumber(CPhidgetHandle phid,int * serialNumber)  

(당신이 관심이 있다면) 당신은 전체 설명서 here을 볼 수있다 MacRuby에서 C 프레임 워크와 함께 일하고 있습니다.

i = CPhidget_getSerialNumber(@encoder, nil) 

는 위의 나에게 숫자가 아닌 일련 번호를 가져옵니다

는 MacRuby에서 나는 다음과 같은 노력했다. 이것은 나에게 알리는 오류 얻을

CPhidget_getSerialNumber(@encoder, i) 

: 포인터의 예상 인스턴스가`0 '(Fixnum이라는) (형식 오류)을 (나를 놀라게하지 않는) 얻었다.

제 질문은 : MacRuby에 C 포인터가 있습니까?

+0

당신이 링크 문서가 보인다, 루비의 배열 액세스 구문을 사용합니다 (이 역 참조 즉) 포인터의 결과를 추출하기 위해, 그리고

i = Pointer.new(:int) CPhidget_getSerialNumber(@encoder, i) 

: 그래서, 당신이 뭔가를 할 수 원시 C 라이브러리에 대한 설명서 여야합니다. 외국 함수 호출을 어떻게 수행합니까? –

+0

C-API 기반의 코코아 프레임 워크가 있습니다. 기능은 모두 동일합니다 (분명히). 헤더 파일의 상수에 액세스 할 수있는 브리지 지원 파일을 생성하고 작동하도록 _seems_합니다. 여기 코코아 '가이드'(http://www.phidgets.com/documentation/Tutorials/Getting_Started_Cocoa.pdf) – tsugua

답변

2

MacRuby에는 C 포인터를 사용할 수있는 포인터 클래스가 있습니다.

i[0] #=> value from CPhidget_getSerialNumber 
+0

굉장하고, 조쉬에게 도움을 주셔서 감사합니다. 루비 문서 또는 애플 문서에서 포인터 클래스에 대한 참조를 찾을 수 없습니다. 호기심에서 벗어나 문서가 어디에 있는지 알고 있습니까? – tsugua

+0

실제로는 아직 문서화하지 않은 것 같습니다 (일반적으로'macri'를 사용하여 설명서를 읽을 수 있습니다). 문서를 요청하는 버그를 신고하려면 https://github.com/MacRuby/MacRuby/issues – Josh

+0

안녕하세요 Josh, 버그를 신고 하겠지만 결국 포인터 클래스 참조를 찾았습니다. github wiki : https://github.com/MacRuby/MacRuby/wiki/Pointer-Class – tsugua