using fortran common block from dll created by gfortran
Satish Balay
balay@fastmail.fm
Wed Jun 24 15:59:00 GMT 2015
Thanks for the note.
I had previously tried something similar - using the directives from
http://gcc.gnu.org/onlinedocs/gfortran/GNU-Fortran-Compiler-Directives.html
However - I get errros.
>>>>>>>>>>
balay@ps4 ~/junk
$ cat cb_func.f
subroutine cb_func()
!GCC$ ATTRIBUTES DLLEXPORT :: cb_func, /cb/
common /cb/ cvar
integer cvar
cvar = 2
end
balay@ps4 ~/junk
$ gfortran -c cb_func.f
cb_func.f:2.40:
*GCC$ ATTRIBUTES DLLEXPORT :: cb_func, /cb/
1
Error: Invalid character in name at (1)
balay@ps4 ~/junk
$
<<<<<<<<<<<<<
Wrt 'common blocks' vs 'module' - this usage is part of a c library
supporting fortran interfaces [and works generally on various OSes,
compilers]. We haven't worked with dlls on windows much. However this
issue came up on such an attempt with cgwin/gnu compilers.
PS: I'm not subscribed to the ML - it would be great if I'm included in cc:
Thanks,
Satish
>>>>>>>
Hi,
while this is not directly related to gfortran on Cygwin, this article
might help you appreciate the issues involved:
https://software.intel.com/en-us/node/535307
Are you bound to common blocks? If not, you may get better results
when you put the data in a module.
Regards,
Arjen
On Tue, 23 Jun 2015, Satish Balay wrote:
> Hi Cygwin,
>
> I'm debuging an issue with dlls with cygwin gnu compilers - and have
> narrowed down the issue to the attached test case [script].
>
> Could you guide me to correct usage of 'fortran common block' with dlls?
>
> [In this example - using fortran 'common block' via static library
> works. However the same code using a .dll fails]
>
> Thanks,
> Satish
>
> ---------
>
> balay@ps4 ~/junk
> $ ./cb_test.sh
> + cat
> + cat
> + rm -f '*.o' '*.dll' '*.a' '*.exe'
> + gfortran -c cb_func.f cb_main.f
> + ar cr libcb_static.a cb_func.o
> + gfortran cb_main.o -L. -lcb_static -o cb_main_static
> + gfortran -shared -o libcb_dynamic.dll cb_func.o
> + gfortran cb_main.o -L. -lcb_dynamic -o cb_main_dynamic
> + ./cb_main_static
> GOOD COMMON BLOCK
> + ./cb_main_dynamic
> BAD COMMON BLOCK
>
>
> balay@ps4 ~/junk
> $ uname -a
> CYGWIN_NT-6.1 ps4 2.0.4(0.287/5/3) 2015-06-09 12:22 x86_64 Cygwin
>
> balay@ps4 ~/junk
> $ gfortran --version
> GNU Fortran (GCC) 4.9.2
--
Problem reports: http://cygwin.com/problems.html
FAQ: http://cygwin.com/faq/
Documentation: http://cygwin.com/docs.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
More information about the Cygwin
mailing list