Fortran DLL and D
Tobias Brandt
tob.brandt at googlemail.com
Tue Mar 13 15:58:48 PDT 2012
On 13 March 2012 23:53, Michael <pr at m1xa.com> wrote:
> On Tuesday, 13 March 2012 at 22:30:02 UTC, Tobias Brandt wrote:
>>
>> Fortran uses pass-by-ref by default. You could try
>>
>> integer, value :: i
>>
>> in the Fortran function declaration, OR
>>
>> *int
>>
>> in the MyHandler declaration.
>
> in case integer, value :: i or integer, intent(in) :: i
>
> same results
>
>
> in case int*
>
> int * i;
> *i=5;
> (*mh)(i);
>
> object.Error: Access Violation
> ----------------
> 409960
> 4097D7
> 402BA8
> 402BE7
> 4027F7
> 413635
> ----------------
>
>
You could use the C binding syntax:
SUBROUTINE fsu (i) bind(C, name = "FSU")
real :: x
integer, value :: i
x = 0.025
print *, 'The answer is x = ', x , i
END SUBROUTINE fsu
and then use extern(C) in D. That should work, but you
need a newish Fortran compiler.
More information about the Digitalmars-d
mailing list