Hi,

博陈 <chenphysic...@gmail.com> writes:
> The julia code:
>
> !f90tojl.f90
> module m
> contains
> integer function five()
> five = 5
> end function five
> end module m
>
> The corresponding julia code:
> #test.jl
> println(ccall( (:__m_MOD_five, "f90tojl"), Int, () ))
>
> The test command and the result: (test is the directory, not a command)
> ➜ test gfortran -shared -fpic f90tojl.f90 -o f90tojl.so
> ➜ test julia test.jl 
> 5
> ➜ test ifort -shared -fpic f90tojl.f90 -o f90tojl.so
> ➜ test julia test.jl 
> ERROR: LoadError: ccall: could not find function __m_MOD_five in library 
> f90tojl
> in anonymous at no file
> in include at ./boot.jl:261
> in include_from_node1 at ./loading.jl:320
> in process_options at ./client.jl:280
> in _start at ./client.jl:378
> while loading /home/chen/test/test.jl, in expression starting on line
> 1

You can check list of symbols in the created library with the command
nm. With gfortran your "five" function will be called __m_MOD_five as in
your Julia call, buth with Ifort you will have to use m_mp_five_ 

,----
| angelv@carro:~/temp$ nm testgfort.so | grep five
| 0000000000000635 T __m_MOD_five
|
| angelv@carro:~/temp$ nm testifort.so | grep five
| 0000000000000740 T m_mp_five_
`----

Cheers,
-- 
Ángel de Vicente
http://www.iac.es/galeria/angelv/          

Reply via email to