我正在使用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
相关分类