Sto cercando di passare una struct C a Julia usando ccall
Restituzione di strutture C by-valore a Julia
Ecco il mio file in C:
#include <stdio.h>
typedef struct {
float a;
float b;
} TestStruct;
TestStruct getStruct() {
TestStruct s = {3.0f, 5.0f};
printf("Created struct a: %f b: %f\n", s.a, s.b);
return s;
}
Poi ho compilare questo in una libreria condivisa per usare con Julia.
Ecco il mio file di Julia:
immutable TestStruct
a::Cfloat
b::Cfloat
end
struct = ccall((:getStruct, "libteststruct"), TestStruct,())
println("Got struct a: ", struct.a, " b: ", struct.b)
Quando eseguo questo file mi aspetto di ottenere
Created struct a: 3.000000 b: 5.000000
Got struct a: 3.0 b: 5.0
Tuttavia, sono invece ottenendo
Created struct a: 3.000000 b: 5.000000
Got struct a: 3.0 b: 0.0
a
è sempre corretto ma b
è sempre 0
.
Questo funziona quando uso i double nella struct invece dei float, ma ho bisogno di usare float.
Grazie.
Quale piattaforma e quale versione di Julia? (potrebbe essere rilevante) – IainDunning
Sto usando 64 bit Mac OS X Mavericks e Julia 0.3.7 – Zach