0

我很新ctypes。尝试使用 ctypes,因为我想使用 libquicktime 库将文本轨道插入到使用 python 的电影中。我正在尝试以下操作,但出现了段错误。我认为正如文档所说,我应该通过ins64_t持续时间(在我的情况下,随机数 123 用于测试)。想知道如何定义int64_tvar:

>> 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

如果有人能解释我如何在 python 中映射 (int64, uint64) 这样的数据类型,那将非常有帮助?

4

2 回答 2

0

您可以使用函数原型来检查参数。

int64_tctypes.c_int64

于 2012-08-02T05:42:26.090 回答
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可以只替换 void 指针作为类型。

于 2012-08-02T13:38:54.893 回答