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
>>>
>>
>>
>

Reply via email to