I've posted the link to this blog post before, maybe it can help: http://maurow.bitbucket.org/notes/calling_fortran_from_misc.html
On Tue, 2014-12-16 at 20:27, Isaiah Norton <[email protected]> wrote: > With the following changes, your example works for me on mingw64: > > "-o" needs to be paired with a filename: > > gfortran -shared -O2 f90tojl.f90 -fPIC -o f90tojl.dll > > This will allow your original ccall invocation to work. Julia doesn't look > at ".so" files by default on windows, but the following pair will also > work; the shared library extension is given explicitly in the ccall: > > gfortran -shared -O2 f90tojl.f90 -fPIC -o f90tojl.so > julia> ccall( (:__m_MOD_five, "f90tojl.so"), Int, () ) > > Hope this helps to get started. I agree that it would be great to have a > working Fortran example -- if you have a suggested example (or even this > one) please consider making a pull request (see > https://github.com/JuliaLang/julia/blob/master/CONTRIBUTING.md). > > > On Tue, Dec 16, 2014 at 9:04 PM, Vathy M. Kamulete <[email protected]> > wrote: > >> I posted this on StackOverflow. It was recommended I post here. See here >> <http://stackoverflow.com/q/27498755/1965432>for background. >> >> Where can I find good examples of integrating (modern) Fortran code with >> Julia? >> >> I am using the GNU gfortran compiler (on Cygwin) for my own module. A good >> example will hopefully start from the compilation stage, address mangled >> names and call the subroutine from Julia via ccall. Most examples I've seen >> skip the first two stages. On the SO post, I refer to Modern Fortran >> explicitly because what I've seen so far tends to be for legacy code -- >> think punchcard-style fixed-width formatting Fortran (that goes for GLMNet, >> which was allegedly written in 2008 but adheres to those conventions). >> >> So imagine that I have the following module in Fortran90 file named >> 'f90tojl.f90': >> >> module m >> contains >> integer function five() >> five = 5 >> end function five >> end module m >> >> This example is from here >> <http://en.wikipedia.org/wiki/Name_mangling#Name_mangling_in_Fortran>. I >> compile it with gfortan as follows to create a shared library: >> >> gfortran -shared -O2 f90tojl.f90 -o -fPIC f90tojl.so >> >> And my, admittedly shaky, understanding from reading the julia docs >> suggest that I should be able to call the function five like so: >> >> ccall( (:__m_MOD_five, "f90tojl"), Int, () ) >> >> It didn't work for me. I get ''error compiling anonymous: could not load >> module f90tojl... ". Anyone cares to enlighten me? I got the sneaky sense >> I'm doing something silly.... >> >> Thanks in advance, >> >> V. >>
