Hello colleagues,

many thanks for the previous postings, however i still miss something...

My example, test_julia_u1.jl

x1 = Cfloat[2.0];
dump(x1);
ccall((:u1,"./u1.so"),Void,(Ptr{Float64},),x1);
dump(x1);

calls u1.c / u1.so

void u1(double *x) {
   *x += 1.0; }

Rather unexpected is the 0 output:

lobi@m2:~/juliarepo$ ../julia/julia test_julia_u1.jl 
Array(Float32,(1,)) [2.0f0]
Array(Float32,(1,)) [0.0f0]

especially because c does it:

lobi@m2:~/juliarepo$ ./test_main_u1 
3.000000 2.000000

with 

#include <stdio.h>

void main() {
    double c,d;
    c = 2.0;
    d = c;
    u1(&c); 
    printf("%f %f",c,d); }

?

Reply via email to