Problème avec une DLL Fortran
Bonjour à tous,
J'ai crée une DLL Fortran que je veux utiliser avec python .
le module fortran est le suivant:
Code:
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:
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.