Próbuję przekazać C struct Julia używając ccall
Powracający elemencie C za-wartość Julia
Tu jest mój plik w 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;
}
Potem skompilować to pod wspólną bibliotekę używaj z Julią.
Oto mój plik Julia:
immutable TestStruct
a::Cfloat
b::Cfloat
end
struct = ccall((:getStruct, "libteststruct"), TestStruct,())
println("Got struct a: ", struct.a, " b: ", struct.b)
Kiedy uruchamiam ten plik Spodziewam się dostać
Created struct a: 3.000000 b: 5.000000
Got struct a: 3.0 b: 5.0
Jestem jednak zamiast coraz
Created struct a: 3.000000 b: 5.000000
Got struct a: 3.0 b: 0.0
a
jest zawsze poprawne, ale b
jest zawsze 0
.
Działa to, gdy używam podwójnych w struct zamiast unoszących się, ale muszę użyć pływaków.
Dziękuję.
Jaka platforma i która wersja Julii? (może być istotne) – IainDunning
Używam 64-bitowych Mac OS X Mavericks i Julii 0.3.7 – Zach