[squeak-dev] problema con FFI: "could not coerce arguments"

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

[squeak-dev] problema con FFI: "could not coerce arguments"

Mariano Martinez Peck
Tuve que mapear con openDBX las funciones odbx_set_argument y la odbx_get_argument.

Estoy probando la set, y me tira ese error de FFi. Creo que es un quilombo con el void pues es la primer función que mapeamos con ello.

La función de openDBX es así:
int odbx_set_option(
odbx_t* handle,
unsigned int option,
void* value )


Acá hay un ejemplo en C de cómo se usa:

option = ODBX_TLS_ALWAYS;
if( ( err = odbx_set_option( handle, ODBX_OPT_TLS, (void*) &option ) ) < 0 )
{
fprintf( stderr, "odbx_set_option(): %s\n", odbx_error( handle, err ) );
odbx_finish( handle );
return err;
}


Así es el método apiSetOption de la clase OpenDBX

apiSetOption: handle option: anOption value: aValue
    "int odbx_unbind(odbx_t*)"
    <cdecl: long 'odbx_set_option' (ulong ulong void*) module: 'opendbx' >
    ^self externalCallFailed
   

Probé poner void*, void, ulong y ulong* pero en todos los casos me tiró el mismo error.

Así se usa éste método en la clase DBXConnection:

err := OpenDBX apiSetOption: self option:32  value:1.

No lo subí porque no anda (y además porque squeaksource está caído), pero si no lo subo no se si me van a poder ayudar....¿quieren que igualmente lo suba? ¿alguna idea o pregunto en squeak-dev?

saludos,

mariano


Reply | Threaded
Open this post in threaded view
|

Re: [squeak-dev] problema con FFI: "could not coerce arguments"

Giuseppe
Mariano, ya estás preguntando en Squeak-Dev directamente, donde has enviado este correo :P

On Mon, 26 May 2008 01:49:07 -0300
"Mariano Martinez Peck" <[hidden email]> wrote:

> Tuve que mapear con openDBX las funciones odbx_set_argument y la
> odbx_get_argument.
>
> Estoy probando la set, y me tira ese error de FFi. Creo que es un quilombo
> con el void pues es la primer función que mapeamos con ello.
>
> La función de openDBX es así:
>
> int *odbx_set_option*(
>     odbx_t* *handle*,
>     unsigned int *option*,
>     void* *value* )
>
>
> Acá hay un ejemplo en C de cómo se usa:
>
> option = ODBX_TLS_ALWAYS;
> if( ( err = odbx_set_option( handle, ODBX_OPT_TLS, (void*) &option ) ) < 0 )
> {
>     fprintf( stderr, "odbx_set_option(): %s\n", odbx_error( handle, err ) );
>     odbx_finish( handle );
>     return err;
> }
>
>
> Así es el método apiSetOption de la clase OpenDBX
>
> apiSetOption: handle option: anOption value: aValue
>     "int odbx_unbind(odbx_t*)"
>     <cdecl: long 'odbx_set_option' (ulong ulong void*) module: 'opendbx' >
>     ^self externalCallFailed
>
>
> Probé poner void*, void, ulong y ulong* pero en todos los casos me tiró el
> mismo error.
>
> Así se usa éste método en la clase DBXConnection:
>
> err := OpenDBX apiSetOption: self option:32  value:1.
>
> No lo subí porque no anda (y además porque squeaksource está caído), pero si
> no lo subo no se si me van a poder ayudar....¿quieren que igualmente lo
> suba? ¿alguna idea o pregunto en squeak-dev?
>
> saludos,
>
> mariano
>


--
Giuseppe Luigi Punzi <[hidden email]>
<http://www.lordzealon.com>