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:
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]))
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 ?

Merci d'avance.