1
我想用f2py編譯一個fortran模塊。這是下面的代碼使用f2py編譯一個帶有接口的模塊
module my_log_mod
implicit none
interface my_log
module procedure my_log_array
module procedure my_log_vector
end interface my_log
private ! hides items not listed on public statement
public :: my_log
contains
subroutine my_log_array(a,res)
double precision, dimension (:,:), intent (in) :: a
double precision, dimension (:,:), intent (out) :: res
where (a>1.0)
res = log(a)
else where
res = 0.D0
end where
end subroutine
subroutine my_log_vector(a,res)
double precision, dimension (:), intent (in) :: a
double precision, dimension (:), intent (out) :: res
where (a>1.0)
res = log(a)
else where
res = 0.D0
end where
end subroutine
end module my_log_mod
,我用下面的命令
f2py.py -c -m my_log_mod_comp my_log_mod.f90
編譯和它導致以下錯誤
C:\Users\weisshau\AppData\Local\Temp\tmpf0apqa7s\src.win32-3.6\my_log_mod_comp-f2pywrappers2.f90:7:28:
use my_log_mod, only : my_log_array
1
Error: Symbol 'my_log_array' referenced at (1) not found in module 'my_log_mod'
C:\Users\weisshau\AppData\Local\Temp\tmpf0apqa7s\src.win32-3.6\my_log_mod_comp-f2pywrappers2.f90:18:28:
use my_log_mod, only : my_log_vector
1
Error: Symbol 'my_log_vector' referenced at (1) not found in module 'my_log_mod'
我真的不知道很多關於Fortran和f2py,所以我不知道發生了什麼。如果我在純Fortran中使用模塊,它可以很好地工作
非常感謝您的回答。我嘗試了你的兩個建議,但它仍然不起作用。也許我應該擴大我的問題:「我如何編寫一個fortran子程序,將任意數組作爲輸入和輸出,並將其與f2py一起使用」 – Jannick
它可以在我的計算機上運行。至少在你提供的代碼中。解釋*它不起作用*。這句話沒有說明什麼。你什麼意思? –
*「我如何編寫一個將任意數組作爲輸入和輸出並將其與f2py結合使用的Fortran子例程」*您不需要。這就是我在回答中所提出的觀點。 –