[Numpy-discussion] Calling routines from a Fortran library using python
Nils Wagner
nwagner@iam.uni-stuttgart...
Tue Feb 23 02:43:04 CST 2010
On Mon, 22 Feb 2010 22:18:23 +0900
David Cournapeau <cournape@gmail.com> wrote:
> On Mon, Feb 22, 2010 at 10:01 PM, Nils Wagner
> <nwagner@iam.uni-stuttgart.de> wrote:
>
>>
>> ar x test.a
>> gfortran -shared *.o -o libtest.so -lg2c
>>
>> to build a shared library. The additional option -lg2c
>>was
>> necessary due to an undefined symbol: s_cmp
>
> You should avoid the -lg2c option at any cost if
>compiling with
> gfortran. I am afraid that you got a library compiled
>with g77. If
> that's the case, you should use g77 and not gfortran.
>You cannot mix
> libraries built with one with libraries with another.
>
>>
>> Now I am able to load the shared library
>>
>> from ctypes import *
>> my_lib = CDLL('test.so')
>>
>> What are the next steps to use the library functions
>> within python ?
>
> You use it as you would use a C library:
>
> http://python.net/crew/theller/ctypes/tutorial.html
>
> But the fortran ABI, at least for code built with g77
>and gfortran,
> pass everything by reference. To make sure to pass the
>right
> arguments, I strongly suggest to double check with the
>.h you
> received.
>
> cheers,
>
> David
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion@scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
Just to play it safe
Consider
extern void dsio (int* const,const char* const,
int* const,const size_t);
extern void dsrhed (const int* const,const int*
const,void* const,
const int* const,const int* const,int* const,
int* const,int* const,int* const,int* const,
int* const,int* const,int* const);
from ctypes import *
my_lib = CDLL('libtest.so')
How do I call the functions within python
I mean what arguments are needed ?
my_lib.dsio( )
my_lib.dsrhed( )
Thank you very much for your help.
Cheers,
Nils
More information about the NumPy-Discussion
mailing list