It seems to me like the error is that you don't have a Julia method
results = gillespie (rr, 0)
that takes an Int as the second argument. the method you define only takes
a Float64, so you should probably call it with a Float64 as well.
results = gillespie (rr, 0.)
Also I would think that RRHandle would be pointer sized, so you should use
Ptr{Void} instead of Uint for its type.
Regards Ivar
kl. 03:24:36 UTC+2 tirsdag 29. juli 2014 skrev Alexander Darling følgende:
>
> Hello,
>
> I am in the process of making Julia functions that use functions in
> C-exported libraries using "ccall". One of the functions I am writing
> throws errors when I try to include a double in the call. I think this is
> because I'm using the wrong type instead of double (Float64) but I don't
> know what the correct type is and I'm not 100% sure that's the problem.
>
> This is the function in C:
> C_DECL_SPEC RRDataHandle rrcCallConv gillespie(RRHandle handle, double
> startTime) {
> // Things happen here
> return (RRDataHandle) r->getSimulationResult();
> }
>
>
> Here is my test code.
> rrlib = dlopen("...\\roadrunner_c_api.dll") // the library that the
> "gillespie" function is from
>
> function gillespie(rr, startTime::Float64)
> return ccall (dlsym (rrlib,:gillespie),cdecl, Uint,(Uint, Float64),rr,
> startTime)
> end
>
> //The object "rr" is set up here
> results = gillespie (rr, 0)
>
> And this is the error that gets thrown. For context, The "gillespie"
> function is called on line 106 and the "rr" object's memory address is
> @0x23dc4c08.:
> LoadError(".../myTest.jl", 106, MethodError(gillespie, (Ptr{Void} @
> 0x23dc4c08,0)))
>
> When I modify the function in C and the middleman function in Julia so
> that both only takes the "rr" argument and not "startTime", it works fine.
> In addition, the function works just fine in C with two arguments. I
> suspect it's because the "startTime" in Julia is a Float64, and C requires
> a double. However changing the "startTime" argument in the C function into
> a float just gives me the same error.
>