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)
>>>>>
>>>>>
>>>>
>>