2014-07-10 17:58 GMT+02:00 Annick Fron <i...@afceurope.com>:

> Hi,
>
> I have made simple trials using the StandardLib.
> I get this error :
> RBParser does not understand externalFunctionDeclaration.
> I might be missing something …
>

Yes, you are missing a package named "AST FFI Pharo 3 compatibility".
externalFunctionDeclaration is implemented in RBExplicitVariableParser
(subclass of RBParser) as a method extension of this package.

The simplest solution is when you open a fresh pharo 3 image, you open the
configuration browser (world menu >> tools >> configuration browser) then
you click on FFI then install stable version. It loads automatically all
what's needed to have FFI working.


>
> Annick
>
> Le 9 juil. 2014 à 17:20, Esteban Lorenzano <esteba...@gmail.com> a écrit :
>
> 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> 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'>
>  ^self externalCallFailed
>
> This works fine too:
>
> <apicall: int 'gst_init_check' (int* char* int*) module: '
> 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>:
>
>> 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'>
>>
>> ^self externalCallFailed
>>
>> ====
>>
>> but when accepting it I get a syntax error « matching number of
>> arguments »
>> Annick Fron
>>
>
>
>
>

Reply via email to