Your code works for me, so I think there is still a problem on your system 
configuration.

The error is about the C function `CVodeCreate`, not the Julia function 
with the same name, and apparently Julia finds the sundials library, but it 
does not contain the function.

Try to run `print(Sys.dllist())` after running your test code to see what 
libraries are actually loaded. When you know what library gets loaded, you 
can inspect the library with eg. `nm /usr/local/lib/libsundials_cvode.dylib`, 
and see if you can find the `CVodeCreate` function.

Ivar


kl. 11:35:46 UTC+1 tirsdag 11. mars 2014 skrev Thomas Moore følgende:
>
> OK, running 
>
> push!(DL_LOAD_PATH, "/usr/local/lib/") 
>
> has improved the situation a little: now we get this error:
>
> ERROR: ccall: could not find function CVodeCreate in library 
> libsundials_cvode
>  in ode at /home/thomas/.julia/Sundials/src/Sundials.jl:250
>
> At least the shared library is recognised :) 
>
> Sundials.CVodeCreate seems to be a generic function, but in Sundials.jl at 
> line 250 the call to it doesn't seem to be recognised - the error is driven 
> by this call to it:
>
>  mem = CVodeCreate(CV_BDF, CV_NEWTON)
>
> Any more ideas? :D
>
> Again, a massive thanks! I'm sure this will be useful to others looking 
> for a nice DAE solver in Julia in the near future :)
>
> Tom
>
> On Monday, 10 March 2014 23:25:25 UTC+10, Isaiah wrote:
>>
>> try:
>>
>> julia> push!(DL_LOAD_PATH, "/usr/local/lib/")
>>
>> you can also double-check whether it is loadable:
>>
>> julia> dlopen("/usr/local/lib/libsundials_cvode.so")
>>
>> clang.jl is only a dependency for generating the bindings, not at runtime.
>>
>>
>> On Mon, Mar 10, 2014 at 8:42 AM, Thomas Moore <[email protected]>wrote:
>>
>>> Thanks for your help everyone! I couldn't find the .so file originally, 
>>> but after building it again with ./configure --enable-shared there was a 
>>> libsundials_cvode.so in my /usr/local/lib. However I still have the same 
>>> problem. So far I have:
>>>
>>> removed sundials with Pkg.rm("Sundials")
>>> reinstalled it with Pkg.add("Sundials")
>>>
>>> And then run:
>>>
>>> push!(DL_LOAD_PATH, "/usr/local/lib/libsundials_cvode.so")
>>>
>>> And then run the function I copied above. I fear I'm still getting the 
>>> exact same error though. It seems it's not recognising the existence of the 
>>> .so file :(
>>>
>>> Any recommendations? My (novice) thoughts are: possibly julia doesn't 
>>> have permission to access libsundials_cvode.so, I don't know why not 
>>> though. Also maybe I need some other package installed: for instance, is 
>>> Clang.jl a dependency - it isn't listed as such?
>>>
>>> Thanks!
>>>
>>>
>>>
>>> On Monday, 10 March 2014 21:53:54 UTC+10, Isaiah wrote:
>>>
>>>> Ah, good call. Use `./configure --enable-shared` for the Makefile build.
>>>>
>>>>
>>>> On Mon, Mar 10, 2014 at 3:34 AM, Ivar Nesje <[email protected]> wrote:
>>>>
>>>>> I do not know CMake, but now that I have a computer I found out that I 
>>>>> probably used
>>>>>
>>>>> BUILD_SHARED_LIBS:BOOL=on
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> kl. 07:43:38 UTC+1 mandag 10. mars 2014 skrev Ivar Nesje følgende:
>>>>>
>>>>>> Sundials does not compile a shared library by default. You must look 
>>>>>> in the PDF manual to find the right option to send to make or configure. 
>>>>>> (Large pdf is hard to read on phone)
>>>>>
>>>>>
>>>>
>>

Reply via email to