Bonjour à tous,
J'ai crée une DLL Fortran que je veux utiliser avec python .
le module fortran est le suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 module module_calculate_stats use iso_fortran_env use iso_c_binding implicit none contains subroutine calculate_sum(array, array_sum, n) bind(C) integer(c_int), value :: n real(kind=c_float), intent(in), dimension(n)::array real(kind=c_float), intent(out)::array_sum array_sum=sum(array) end subroutine calculate_sum subroutine calculate_mean(array, array_mean, n) bind(C) integer(c_int), value :: n real(kind=c_float), intent(in), dimension(n)::array real(kind=c_float), intent(out)::array_mean array_mean=sum(array)/n end subroutine calculate_mean end module module_calculate_stats
Le script python qui utilise la DLL est le suivant:
En lançant le script j'ai le message d'erreur : AttributeError: function 'calculate_sum' not found. Avez-vous déjà rencontré le problème? une explication ou une solution ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 import ctypes as ct import numpy as np from numpy.ctypeslib import ndpointer fort_lib=ct.CDLL('./LibFortran.dll') fort_lib.calculate_sum.argtypes=[ ndpointer(dtype=ct.c_float), ct.POINTER(ct.c_float), ct.c_int] fort_lib.calculate_sum.restype=None def my_mean(arr): arr = np.ascontiguousarray(arr, dtype=ct.c_float) mean = ct.c_float(0.0) n = arr.size fort_lib.calculate_sum(arr, mean, n) return mean.value print(my_mean([1,2,3,4,5]))
Merci d'avance.
Partager