我正在使用ctypes从python调用C DLL。对于大多数功能,所有功能都可以正常工作。但是...现在我有一个需要输入十六进制常量的函数,而且我似乎无法正确传递它。
我没有C源代码,但是从文档中可以看到,函数定义如下:
sensv_bn* NewSensvToFinding_bn (const node_bn* Qnode, const nodelist_bn* Vnodes, int what_find)
我几乎可以肯定我正在传递Qnode并且Vnodes正确,因为它们是由DLL中的其他函数创建的。问题是与int所谓的what_find。
从DLL附带的头文件中,我看到以下行: enum {ENTROPY_SENSV = 0x02, REAL_SENSV = 0x04, VARIANCE_SENSV = 0x100, VARIANCE_OF_REAL_SENSV = 0x104}; /* for NewSensvToFinding_bn */
我要传递what_find的值VARIANCE_OF_REAL_SENSV是十六进制值0x104。
我试着不经过转换就传递了它,也使用ctypes.c_int(0x104)了它,将其强制转换为int,但是函数返回的是0而不是指针。我也尝试过不经过转换而得到相同的结果。
我应该执行更适当的转换吗?我有点C n00b,如果这是一个非常幼稚的问题,抱歉。
潇潇雨雨
芜湖不芜
慕容708150
随时随地看视频慕课网APP
相关分类