大家好,我有一个具有以下成员的结构
struct test {
uint8_t one;
uint32_t two;
uint8_t three;
bool_t four;
bool_t five;
bool_t six;
bool_t seven;
};
我有以下python函数
from cffi import FFI
ffi=FFI()
dll = ffi.dlopen( 'test.dll')
def test_one(**kwargs ):
p_val = ffi.new( 'struct test*' ) #create a struct using cffi
dout = dll.test_one( p_val ) #call the func from dll
kwargs['one'] =str( p_val.one)
kwargs['two '] = str( p_val.two )
kwargs['three'] =str( p_val.three)
kwargs['four'] = str( p_val.four)
kwargs['five'] = str( p_val.five)
kwargs['six'] =str( p_val.six)
kwargs['seven'] = str( p_val.seven)
print kwargs
当我打印结构成员(即kwargs)时,除第一个成员外,其他结构成员均未更新。我传递或接收任何错误的值吗? 请让我知道我的代码中有任何错误。
答案 0 :(得分:0)
嗨,我遇到了问题python中的bool_t占用了1个字节,但是由于某些奇怪的原因,使用Visual Studio c ++(版本4)创建的dll中的bool_t占用了4个字节,这是因为只有很少的结构元素被更新了(运气不错) )。通过#define bool_t char解决了该问题。