Ошибка f2py: неопределенный символ - PullRequest
2 голосов
/ 18 октября 2011

Мне нужно обернуть просто код fortran90 с помощью f2py.Модуль fortran "test.f90" имеет значение

module util

contains

FUNCTION gasdev(idum)
implicit none
INTEGER(kind=4), intent(inout) :: idum
REAL(kind=8) :: gasdev, ran2
print*,idum
gasdev = ran2(idum)
return
END FUNCTION

FUNCTION ran2(idum)
implicit none
INTEGER(kind=4), intent(inout) :: idum
REAL(kind=8) :: ran2
print*,idum
ran2=2.D0
return
END FUNCTION
end module util

, а затем я обертываю его с

f2py  -m test -c test.f90

, но когда я импортирую его в python

In [2]: import test

, то онмне подсказали с ошибкой высказывание

ImportError: ./test.so: undefined symbol: ran2_

Есть идеи как это исправить?Спасибо.

1 Ответ

5 голосов
/ 18 октября 2011

В функции gasdev вы объявляете ran2 как внешнюю функцию.Поскольку вы не будете ссылаться ни на одну из таких функций, импорт модуля завершится неудачно.

Вместо этого удалите объявление ran2 в gasdev, и в этом случае вызов ran2 использует явный интерфейс к функции ran2 в модуле, и все работает.

...