Ok thanks!

I think I need to embed my ccall in a Julia function with indicating arrays 
for output like DX::Union{Ptr{$elty},DenseArray{$elty}} in the function 
declaration. I will try something like that and see the result.

Those things are pretty obscur in the Julia doc for ccall... Maybe we could 
ask for more explicit Fortran examples in the doc?

Charles.



Le mercredi 8 juin 2016 00:56:02 UTC+10, Paulo Jabardo a écrit :
>
> I haven't done this often but when I did I looked at how it is done in the 
> lapack and blas interfaces. There are several examples
>
> https://github.com/JuliaLang/julia/blob/master/base/linalg/blas.jl
>
> https://github.com/JuliaLang/julia/blob/master/base/linalg/lapack.jl
>
>
> Paulo
>
> On Monday, June 6, 2016 at 9:16:27 PM UTC-3, Charles Ll wrote:
>>
>> Dear all,
>>
>> Thank you very much for you help! I've been able to write a form of 
>> gcvspl that seems to run, with calling:
>>
>> ccall( (:gcvspl_, "./libgcvspl.so"), Void, 
>> (Ptr{Float64},Ptr{Float64},Ptr{Cint},Ptr{Float64},Ptr{Float64},Ptr{Cint},Ptr{Cint},Ptr{Cint},Ptr{Cint},Ptr{Float64},Ptr{Float64},Ptr{Cint},Ptr{Float64},Ptr{Cint}),x,y,&NN,wx,wy,&M,&N,&K,&MD,VAL,c,&NC,WK,IER)
>>
>>
>> However, when I try to call the c or IER variables, the Julia kernel 
>> dies... :s
>>
>> Do you have any idea why? What am I missing?
>>
>> Furthermore, dear Erik, what do you mean by using 'Ref' for one-element 
>> arrays?
>>
>> Thanks in advance!
>>
>> Best,
>> Charles.
>>
>> Le lundi 6 juin 2016 22:12:32 UTC+10, Erik Schnetter a écrit :
>>>
>>> I would use `Cint` as type, not `Int64`, as in `Ptr{Cint}`. Are you sure 
>>> that your Fortran code uses 64-bit integers? Technically, this violates the 
>>> Fortran standard. A Fortran integer is the same as a C int, except if you 
>>> use special flags while building the Fortran library (which you might be 
>>> doing).
>>>
>>> You can use `Ref` instead of one-element arrays.
>>>
>>> Your error message has nothing to do with arrays vs. pointer, but rather 
>>> the mismatch between `Float64` and `Int64`.
>>>
>>> -erik
>>>
>>>
>>> On Mon, Jun 6, 2016 at 6:07 AM, Páll Haraldsson <[email protected]> 
>>> wrote:
>>>
>>>> On Monday, June 6, 2016 at 3:22:47 AM UTC, Charles Ll wrote:
>>>>>
>>>>> Dear all,
>>>>>
>>>>> I am trying to call some Fortran code in Julia, but I have a hard time 
>>>>> doing so... I have read the docs, looked at the wrapping of ARPACK and 
>>>>> other libraries... But I did not find any way to make it work.
>>>>>
>>>>> I am trying to wrap a spline function library (gcvspl.f, 
>>>>> https://github.com/charlesll/Spectra.jl/tree/master/Dependencies), 
>>>>> which I want to use in my project, Spectra.jl.
>>>>>
>>>>> I already have a wrapper in Python, but this was easier to wrap with 
>>>>> using f2py. In Julia, I understand that I have to do it properly. The 
>>>>> function I am trying to call is:
>>>>>
>>>>
>>>> I think, you may already have gotten the correct answer. At first I was 
>>>> expecting fcall, not just ccall keyword in Julia, to call Fortran.. It's 
>>>> not strictly needed, but in fact, there is an issue somewhere still open 
>>>> about fcall (keyword, or was if for a function?), and it may have been for 
>>>> your situation..
>>>>
>>>>
>>>> [It might not be too helpful to know, you can call Python with 
>>>> PyCall.jl, so if you've already wrapped in Python..]
>>>>
>>>> -- 
>>>> Palli.
>>>>
>>>>
>>>>
>>>
>>>
>>> -- 
>>> Erik Schnetter <[email protected]> 
>>> http://www.perimeterinstitute.ca/personal/eschnetter/
>>>
>>

Reply via email to