2012-04-11 2 views
2

У меня есть программа C, содержащей структуруИспользование структуры в Python формата: первый формат

struct S{ 
      int x; 
      struct timeval t; 
}; 

и функцию

int func(struct S s1, struct S s2) 

Мне нужно вызвать эту функцию из моей питона программы. Я использую ctypes.The параллельной структуры на Python

import ctypes 
from ctypes import * 
class S(Structure): 
     _fields_ = [("x",c_int), 
        ("t", ?)] 

Теперь мой вопрос, что я буду писать в? место и любые связанные с ним зависимости. Спасибо заранее.

+0

Мой совет - он будет работать для хорошего количества платформ, но не для всех, убедитесь, что операционная система Target и тест. –

ответ

4

Найти определение struct timeval в файлах с включением C вашей платформы (Интернет предлагает sys/time.h), а затем перекодировать это в структуру ctypes.

На моей платформе struct timeval является

struct timeval { 
    long tv_sec; 
    long tv_usec; 
}; 

(и я полагаю, что это стандарт так или иначе), так

class timeval(Structure): 
    _fields_ = [("tv_sec", c_long), ("tv_usec", c_long)] 

class S(Structure): 
    _fields_ = [("x",c_int), ("t", timeval)] 

, вероятно, соответствует законопроект.

+0

спасибо .. Я уверен, что ур решение будет работать. – Sudip

+0

еще один вопрос .. эта структура (timeval) меняется с платформы на платформу? – Sudip

+0

_Probably_ нет. – AKX

1

без какой-либо дополнительной информации, это будет определение timeval:

class timeval(Structure): 
    _fields_ = [("tv_sec",c_long), 
       ("tv_usec", c_long)] 

class S(Structure): 
    _fields_ = [("x",c_int), 
       ("t", timeval)] 
+0

спасибо .. Я думаю, что он должен работать .. – Sudip

 Смежные вопросы

  • Нет связанных вопросов^_^