[Madrid-pm] FFI::Platypus y funciones en C++ con tipos de la STL

Joaquín Ferrero explorer en joaquinferrero.com
Jue Abr 7 00:25:41 PDT 2016


El 03/04/16 a las 22:28, Pablo Rodriguez escribió:
> Hola
>
> En la reunión del otro día comente que no había conseguido que funcionara FFI::Platypus con funciones con tipos de la STL en C++, ni siquiera con el más básico: std::string.
>
> Joaquin apuntó a un parrafo en la documentación: https://metacpan.org/pod/FFI::Platypus::Lang::CPP#the-standard-C-library
>
> Tampoco he conseguido hacerlo funcionar.
>
> ¿Alguien más se anima a probar?
>
> El código básico para probarlo está en el repo con las transparencias: https://bitbucket.org/pablorodriguez/slidesperlinteroperability/src/7ef0f4f8a53e0bbd8d28ea01e10e0d37ddbd0a50/examples/Platypus/Cpp/?at=master
>
> Un saludo

Hola, Pablo.

Sí que he conseguido que FFI::Platypus::Lang::Cpp funcione, pero solo con los tipos básicos (por ejemplo, int).

Incluso el ejemplo que trae en la carpeta de ejemplos me compila y funciona, pero no he encontrado ningún ejemplo para pasar tipos complejos (como string) hacia Perl.

Lo más que he conseguido es que el programa en Perl sí que sepa y reconozca la función definida en C++, y la llame, pero genera una "Violación de segmento", y creo que es debido a que no sabe transmitir el puntero de la cadena de caracteres que devuelve GiveMeAString() para luego que Perl entienda que "eso" es un puntero a una cadena de caracteres, para luego poder imprimirlo.

Bueno, este fin de semana lo miro un rato más, pero la clave es esa: si los tipos básicos (los que devuelve el método native_type_map()) sí funciona, ¿cómo se pasan los tipos complejos de la STD?

JF


Más información sobre la lista de distribución Madrid-pm