Форум сайта python.su
0
Здравствуйте.
Имеется библиотека, написаная на делфи, из готорой необходимо вызвать процедуру
Документация к ней гласит такое:
type TINPUT = array[1.. 9] of double; TOUTPUT = array[0..39] of double; procedure CALCULATION( var z1 : integer; var z2 : integer; var INPUT : TINPUT; var z3 : integer; var z4 : integer; var OUTPUT : TOUTPUT); stdcall;
from ctypes import * myLib = cdll.LoadLibrary("D:\\ROTOR.dll") input = [1013,3000,-22,90,3000,20,40,3,600] output = [] z1 = 0 z2 = 0 z3 = 0 z4 = 0 myLib.CALCULATION(z1, z2, input, z3, z4, output)
ArgumentError: argument 3: <type 'exceptions.TypeError'>: Don't know how to convert parameter 3
Офлайн
17
Тебе нужно указать типы входных параметров.
calc = myLib.CALCULATION TINPUT = c_double * 9 TOUTPUT = c_double * 40 calc.argtypes = [ c_int, c_int, TINPUT, c_int, c_int, TOUTPUT ]
Офлайн
0
Большое спасибо за Вашу помощь!
Единственное, пришлось изменить cdll на windll. Я так думаю - виной тому stdcall.
Офлайн