My system...... Ubuntu v8.0.4; Gnu gcc v4.0.3; g95 v0.92
Python v2.5.2; Numpy v1.2.1; f2py v2.5972 Hope someone can see what's wrong here? thanks Dave Lang ..............Here is the F90 code........... ! PROGRAM TO DEMONSTRATE PYTHON-->F90 AND F90-->PYTHON INTERFACE SUBROUTINE CBSET(N, call_back) !f2py intent(in) N !f2py intent(callback) call_back EXTERNAL call_back INTEGER N, m ! IDENTIFY THAT FORTRAN IS EXECUTING & WHO CALLED CBSET PRINT *,'Enter CBSET.F, N=',N IF(N .EQ. 1) THEN PRINT *,' in CBSET: This Call originated to test call-back' PRINT *,' in CBSET: Make callback to PYTHON...EXPECT reply' m=1 CALL call_back(m) PRINT *,' in CBSET: Returned from call-back to PYTHON' END IF IF(N .EQ. 2) THEN PRINT *,' in CBSET: Call came from Python to test Py->For' END IF RETURN END ..............Here is the f2py created Signature code........... ! -*- f90 -*- ! Note: the context of this file is case sensitive. python module cbset__user__routines interface cbset_user_interface subroutine call_back(m) ! in :foo:CBSET.F90:cbset:unknown_interface intent(callback) call_back integer :: m end subroutine call_back end interface cbset_user_interface end python module cbset__user__routines python module foo ! in interface ! in :foo subroutine cbset(n) ! in :foo:CBSET.F90 use cbset__user__routines integer intent(in) :: n intent(callback) call_back external call_back end subroutine cbset end interface end python module foo ! This file was auto-generated with f2py (version:2_5972). ! See http://cens.ioc.ee/projects/f2py2e/ ..............Here is the Python Main Program code........... # Main Python program to test nominal "wrap" and "call back" import foo def main(): print 'HELLO, pymain is about to call CBSET to test f2py operation' print 'BUT, 1st test call_back subr from within python itself' call_back(979) #test "Python --> FORTRAN" (nominal wrap) from Python print 'NOW, call CBSET to test Python --> FORTRAN wrap' n = 2 foo.cbset(n, call_back) #test "FORTRAN --> Python" (call-back) scheme as seen from Python print 'NOW, call CBSET to test FORTRAN --> Python call-back' n = 1 foo.cbset(n, call_back) # define call-back routine def call_back(m): m +=20 print '..Confirming call_back, Python is entered from Fortran' print '..in call_back: m = ', m return # end of call-back defn if __name__ =='__main__': main() ..............Here is the execution result........... [EMAIL PROTECTED]:~/Pyth/ACB$ python pymain.py HELLO, pymain is about to call CBSET to test f2py operation BUT, 1st test call_back subr from within python itself ..Confirming call_back, Python is entered from Fortran ..in call_back: m = 999 NOW, call CBSET to test Python --> FORTRAN wrap Enter CBSET.F, N= 2 in CBSET: Call came from Python to test Py->For NOW, call CBSET to test FORTRAN --> Python call-back Enter CBSET.F, N= 1 in CBSET: this Call originated to test call-back in CBSET: Make callback to PYTHON...EXPECT reply Segmentation fault
_______________________________________________ Numpy-discussion mailing list Numpy-discussion@scipy.org http://projects.scipy.org/mailman/listinfo/numpy-discussion