2012-08-02 58 views
0

對於​​來說這是非常新的。嘗試使用ctypes,因爲我想使用libquicktime庫來使用python插入文本軌道到電影。我正在嘗試以下,我得到seg故障。 我認爲the doc說我應該通過ins64_t持續時間,(在我的情況下,隨機數爲123測試)。不知道我該如何定義int64_t VAR:使用ctypes在python中對c數據項進行seg故障

>> 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的,UINT64)?

回答

0

在調用函數之前定義函數的參數類型。

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) 

注意不透明類型,如quicktime_t只能用一個空指針作爲類型。

+0

謝謝你。 – pappachino 2012-08-03 08:03:35

+0

不客氣。如果答案對您有幫助,您可以通過點擊其左側的複選標記進行投票並選擇一個可接受的答案。 – 2012-08-03 13:40:32

0

您可以使用function prototypes來檢查參數。

int64_tctypes.c_int64

+0

也試過了。 Seg故障。 >> lqt.lqt_write_text(qth,1,'test message',ctypes.c_int64(1)) 分段錯誤 – pappachino 2012-08-02 05:49:53

+0

@pappachino:它在c中工作嗎? – jfs 2012-08-02 05:59:26