Page 119 - 6734
P. 119

for(i=0; i<n; i++)
               {B[i]=A[i]+*x; A[i]-=*x;}
           *x=A[1]-A[0];
           return B;
           }

               Для  компіляції  цього  коду  в  бібліотеку  DLL  застосовано
           команди GCC 4.9.2 (tdm-1):

           mingw32-gcc.exe -O2 -c main.c -o main.o
           mingw32-gcc.exe -shared main.o -o mydll.dll -s

               Тепер до бібліотеки mydll.dll можна звернутись з Python:
           from ctypes import *
           mydll=cdll.LoadLibrary("mydll.dll") # завантажити
           бібліотеку DLL
           float3 = c_float * 3 # тип масиву з 3 елем. С-
           сумісного типу float
           A=float3(1, 2, 3) # масив
           mydll.f.argtypes=[POINTER(c_float), c_int, float3] #
           типи аргументів
           mydll.f.restype=POINTER(c_float) # тип результату
           x=c_float(1) # змінна С-сумісного типу float
           B=mydll.f(x, 3, A) # виклик функції (x, A -
           вказівники)
           # або B=mydll.f(byref(x), 3, A)
           for a in A: print a, # вивести масив A
           print '\n', B[0], B[1], B[2] # вивести масив B (але
           не B[3] !)
           print x.value # значення змінної x

           0.0 1.0 2.0
           2.0 3.0 4.0
           1.0



                                         118
   114   115   116   117   118   119   120   121   122   123   124