Проблема при вызове функции из dll библиотеки, видимо что-то не так с типами передаваемых аргументов.
from ctypes import *
from array import array
swedll = windll.swedll32
#************************************************************
# вызов функции swedll.swe_julday() проходит нормально
#************************************************************
sName = ""
sName = swedll.swe_get_planet_name(1, sName)
jul_day_UT = 0
jul_day_UT = swedll.swe_julday(2011, 4, 23, c_double(0.10), 1)
print "jul_day_UT: ", jul_day_UT
#************************************************************
# вызов функции swe_calc_ut() не работает
#************************************************************
arr_lst = [30.0, 40.0, 0.0, 0.0, 0.0, 0.0 ]
arr_type = c_double * len(arr_lst)
arr = arr_type(*arr_lst)
sErr = create_string_buffer(256)
ret_flag = swedll.swe_calc_ut(c_int(jul_day_UT), c_int(1), c_int(0), byref(arr), byref(sErr))
print "ret_flag: ", ret_flag
for i in arr: print i
swedll.swe_close()
Traceback (most recent call last):
File “…swefem.py”, line 19, in <module>
ret_flag = swedll.swe_calc_ut(c_int(jul_day_UT), c_int(1), c_int(0), byref(arr), byref(sErr))
ValueError: Procedure probably called with not enough arguments (4 bytes missing)
Описание функции кратко:
——————————————————————————————
int swe_calc_ut ( double tjd_ut, int ipl, int iflag, double* xx, char* serr),
where
tjd_ut =Julian day, Universal Time
ipl =body number
iflag =a 32 bit integer containing bit flags that indicate what kind of computation is wanted
xx =array of 6 doubles for:
longitude,
latitude,
distance,
speed in long.,
speed in lat.,
and speed in dist.
serr = character string to return error messages in case of error.
——————————————————————————————
Насколько понятно из описания, возвращаемое значение функции - всего лишь флаг, сообщающий о наличии/отстутствии ошибок, а нужные данные после выполнения функции надо будет считывать из массива xx
Ссылки:
Описание функции: http://www.astro.com/swisseph/swephprg.htm#_Toc283735419
Пример ее использования в Си: http://www.astro.com/swisseph/swephprg.htm#_Toc283735418