On 10 Jul 2014, at 02:32, Andres Valloud <avalloud@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.clement@gmail.com <mailto:bera.clement@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 <info@afceurope.com <mailto:info@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