On 10 Jul 2014, at 02:32, Andres Valloud <avall...@smalltalk.comcastbiz.net> 
wrote:

> On 64 bit Windows a long is 32 bits and pointers are 64 bits, so that type of 
> replacement is not going to work in the long run…

Of course, but let’s take care about that problem when actually become a 
problem :)
Hopefully, for when we finally have a 64bits with FFI, we will have a proper ** 
interpretation, but the workaround is the fastest solution you can have for 
now. 

Esteban

> 
> On 7/9/14 8:20 , Esteban Lorenzano wrote:
>> yes, FFI does not handle ** arguments.
>> I always replace it by ulong instead (it is the same, after all)
>> 
>> Esteban
>> 
>> On 09 Jul 2014, at 17:17, Clément Bera <bera.clem...@gmail.com
>> <mailto:bera.clem...@gmail.com>> wrote:
>> 
>>> Hello,
>>> 
>>> This bug happen both with the old and new compiler.
>>> 
>>> The error tells you that the number of arguments of your smalltalk
>>> method does not match the number of argument of the C method you want
>>> to call (but it seemsthe number of arguments is correct).
>>> 
>>> This works fine:
>>> 
>>> <apicall: int 'gst_init_check' (int char* int) module:
>>> 'libgstreamer1.0-0.so <http://libgstreamer1.0-0.so/>'>
>>> ^self externalCallFailed
>>> 
>>> This works fine too:
>>> 
>>> <apicall: int 'gst_init_check' (int* char* int*) module:
>>> 'libgstreamer1.0-0.so <http://libgstreamer1.0-0.so/>'>
>>> ^self externalCallFailed
>>> 
>>> So it seems the bug comes from the parser missparsing ** . I am not
>>> familiar with C enough to help, I don't know what means ** (Is it a
>>> pointer pointing to a pointer pointing to the actual data ?).
>>> 
>>> Perhaps someone who knows how to use FFI can give a better answer.
>>> 
>>> Esteban ? Guille ?
>>> 
>>> 
>>> 2014-07-09 16:39 GMT+02:00 Annick Fron <i...@afceurope.com
>>> <mailto:i...@afceurope.com>>:
>>> 
>>> 
>>>          Hi,
>>> 
>>> 
>>> 
>>>          I am trying to use FFI on linux with pharo 3 using version
>>>          31 of FFI.
>>> 
>>>    I have written the following method :
>>> 
>>> 
>>>           <apicall: int 'gst_init_check' (int* char** int*) module:
>>>          'libgstreamer1.0-0.so <http://libgstreamer1.0-0.so/>'>
>>> 
>>>    ^self externalCallFailed
>>> 
>>> 
>>>    ====
>>> 
>>>    but when accepting it I get a syntax error « matching number of
>>>    arguments »
>>>    Annick Fron
>>> 
>>> 
>> 
> 


Reply via email to