обновление элемента структуры с использованием cffi python - PullRequest
0 голосов
/ 08 марта 2019

Привет всем, у меня есть структура со следующими членами

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, тогда члены структуры не являютсяобновлен за исключением первого члена.Я передаю или получаю какие-либо неправильные значения?Пожалуйста, дайте мне знать о любых ошибках в моем коде спасибо.

1 Ответ

0 голосов
/ 23 марта 2019

Привет, у меня проблема: bool_t в python занимает 1 байт, но по какой-то странной причине bool_t в dll, который был создан с помощью visual studio c ++ (версия 4), занимает 4 байта, потому что обновляются только несколько элементов структуры (к счастью)).Решил проблему с помощью #define bool_t char.

...