2012-08-02 3 views
0

매우 새로운 것입니다. ctypes입니다. 파이썬을 사용하여 영화에 텍스트 트랙을 삽입하기 위해 libquicktime 라이브러리를 가지고 놀고 싶을 때 ctypes를 사용하려고합니다. 나는 다음을 시도하고 있고 나는 seg faults를 얻는다. 나는 the doc이 내게 ins64_t 기간 (테스트에서는 제 경우의 난수 123)을 넘겨야한다고 말합니다. 누군가가 내가 파이썬 (INT64, UINT64)처럼 같은 데이터 유형을 매핑 할 방법을 설명 할 수 있다면ctypes를 사용하여 파이썬에서 데이터에 오류가 발생했습니다.

>> import ctypes  
>> lqt = ctypes.cdll.LoadLibrary('libquicktime.so.0')  
>> qth = lqt.quicktime_open('/home/blah/movies/Test.018699.mov', 0, 1)  
>> lqt.lqt_add_text_track(qth)  
0  
>> lqt.lqt_set_text_language(qth, 1, 'eng')  
0  
>> lqt.lqt_write_text(qth, 1, 'test message', 123) 
Segmentation fault 

매우 도움이 될 것입니다 : 내가 int64_t VAR을 정의 어떻게 궁금해?

답변

0

함수를 호출하기 전에 함수에 인수 유형을 정의하십시오. quicktime_t 같은

lqt.lqt_write_text.argtypes = [ctypes.c_void_p,ctypes.c_int,ctypes.c_char_p,ctypes.c_int64] 
lqt.lqt_write_text.restype = None 
lqt.lqt_write_text(qth, 1, 'test message', 123) 

참고 불투명 유형은 유형으로 무효 포인터를 대체 할 수 있습니다.

+0

고마워요. – pappachino

+0

반갑습니다. 대답이 도움이 되었다면 투표를하고 왼쪽에있는 체크 표시를 클릭하여 대답을 수용 가능한 것으로 선택하십시오. –

0

function prototypes을 사용하여 인수를 확인할 수 있습니다.

int64_tctypes.c_int64입니다.

+0

시도해 보았습니다. Seg 결함. >> lqt.lqt_write_text (qth, 1, '테스트 메시지', ctypes.c_int64 (1)) 세그먼트 오류 – pappachino

+0

@pappachino : c에서 작동합니까? – jfs

관련 문제