I am not moving from another plateform :/ I tried it in pharo 6 and I it didn't work either.
It could be my dll. What is your compilation line for the dll ? Thanks you, Merwan On Tue, Jul 5, 2016 at 2:14 PM, Ronie Salgado <ronies...@gmail.com> wrote: > Hi Merwan, > > I tested this on Pharo 6 and it is working in Windows. However, in 32 bits > Window doubles have an 8 byte alignment, unlike Linux where they have a 4 > byte alignment. > > Can you try doing the following before performing the ffi call in Windows, > if you are moving an image from Linux or OS X: > > Vec3 rebuildFieldAccessors. > Position rebuildFieldAccessors. > > Best regards, > Ronie > > 2016-07-05 11:11 GMT+02:00 Merwan Ouddane <merwanoudd...@gmail.com>: > >> Hi, >> >> I have an issue whith nested structures. >> >> I made some "dummy" structures in c: >> >> >> typedef struct vec3 { >> double data[3]; >> } vec3; >> >> typedef struct position { >> int i; >> vec3 vec; >> } position; >> And a "dummy" function to fill it: >> void fillStruct(position *position) >> { >> position -> i = 19; >> (position -> vec).data[0] = 1; >> (position -> vec).data[1] = 2; >> (position -> vec).data[2] = 3; >> } >> >> But I can't make the nested structure work. >> The "i" is correctly set to 19 but I have values that doesn't make any >> sense in the vec3 structure. >> >> In Pharo >> I declared the Double3 type for the array inside Vec3: >> Double3 := FFITypeArray ofType: 'double' size: 3 >> >> Vec3>>fieldsDesc >> ^ #( >> Double3 v; >> ) >> >> And the position: >> Position>>fieldsDesc >> ^ #( >> int i; >> Vec3 vec; >> ) >> >> The ffi call: >> ^ self ffiCall: #(void fillStruct(Position *position)) module: 'Test.dll' >> >> Sorry for the long / messy mail :p >> >> Any clues ? >> >> Cheers, >> Merwan >> > >