Using codeblocks, mine are: mingw32-g++.exe -m32 -DBUILD_DLL -c main.cpp -o obj\Release\main.o mingw32-g++.exe -shared -Wl,--output-def=bin\Release\libTest.def -Wl,--out-implib=bin\Release\libTest.a -Wl,--dll obj\Release\main.o -o bin\Release\Test.dll -s -m32
On Tue, Jul 5, 2016 at 2:52 PM, Merwan Ouddane <merwanoudd...@gmail.com> wrote: > 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 >>> >> >> >