Calling Fortran from Python
len-l at telus.net
Thu Apr 5 05:10:38 CEST 2007
> On Apr 4, 5:48 pm, Robert Kern <robert.k... at gmail.com> wrote:
>> Mangabasi wrote:
>>> Would Python 2.5 work with Visual Studio 6.6?
>> Robert Kern
>> "I have come to believe that the whole world is an enigma, a harmless enigma
>> that is made terrible by our own mad attempt to interpret it as though it had
>> an underlying truth."
>> -- Umberto Eco
> I will try the GCC then. It is a shame that I could not get calldll
> to work. It was very simple to use. I think I am making a mistake
> with the argument types but not sure.
> Thanks for your help, it is greatly appreciated.
Did you try ctypes?
>>> from ctypes import *
>>> sample.argtypes=[POINTER(c_int), POINTER(c_int), POINTER(c_double),
>>> e1 = c_int(0)
>>> e2 = c_int(0)
>>> ain = (c_double*3)(2.0, 3.0, 4.0)
>>> aout = (c_double*4)()
>>> sample(e1, e2, ain, aout)
[6.0, 9.0, 8.0, 12.0]
I compile the SAMPLE example with mingw g77 3.4.5:
g77 -shared -o sample.dll sample.for
I had to take out the "INTENT(OUT)"s because g77 didn't like them. And
"SAMPLE" became "sample_" in the dll. Also note that argument passing to
Fortran subroutines is strictly pass-by-reference. Thus the ain pointer.
More information about the Python-list