The warning doesn't matter - you can just remove -fPIC. Try running the
ccall from Julia in the same directory as your .dll file (which must
exist..) or add the path to DL_LOAD_PATH.

On Sun, Dec 21, 2014 at 12:16 PM, Vathy M. Kamulete <[email protected]>
wrote:

> Maybe I'll need to switch to mingw64. On Cygwin, trying to compile issues
> a warning:
>
> f951: warning: -fPIC ignored for target (all code is position independent)
> [enabled by default]
>
> That's for both ways of compiling: .so and dll.
> And I still get the dreaded error:
>
> ''error compiling anonymous: could not load module f90tojl... "
>
> I think CodeBlocks comes with mingw64 so I'll give that a try soon...
>
> Thanks,
> V.
>
>
> On Tuesday, December 16, 2014 11:27:41 PM UTC-5, Isaiah 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.
>>>
>>
>>

Reply via email to