Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: Becerra en 4 Diciembre 2016, 00:13 am



Título: [Curiosidad] Como hacer bindings de una librería
Publicado por: Becerra en 4 Diciembre 2016, 00:13 am
Hola

Esto es solo curiosidad, no voy a hacerlo, más que nada por que no tengo tiempo para ello, pero me entró un poco de curiosidad, nunca entré en el tema.

Algunas librerías, por ejemplo SDL, tienen bindings (http://www.libsdl.org/languages.php) para poder usarla con diferentes lenguajes de programación. ¿Cómo se hace esto? Por ejemplo, si yo quisiese hacer un binding para otro lenguaje de programación ¿Por donde debería empezar a buscar información?

Un saludo


Título: Re: [Curiosidad] Como hacer bindings de una librería
Publicado por: ivancea96 en 4 Diciembre 2016, 12:40 pm
C#: https://github.com/flibitijibibo/SDL2-CS/blob/master/src/SDL2.cs (https://github.com/flibitijibibo/SDL2-CS/blob/master/src/SDL2.cs)
Python: https://bitbucket.org/marcusva/py-sdl2/src/0c43a27d17f8a792234a12e45b728638e34c36fa/sdl2/dll.py?at=default&fileviewer=file-view-default#dll.py-121 (https://bitbucket.org/marcusva/py-sdl2/src/0c43a27d17f8a792234a12e45b728638e34c36fa/sdl2/dll.py?at=default&fileviewer=file-view-default#dll.py-121)

Esos 2 de SDL, lo que hacen prácticamente es importar funciones de la DLL de SDL para luego poderlas utilizar desde ese lenguaje. Además, añaden módulos, namespaces, clases, etc...
Pero la funcionalidad en sí, la cogen en su mayoría de la DLL.
En C# ves el DLLImport y en Python te remarqué el módulo y función que usa por todo el código paraimportar de la DLL.

Si la librería que tienes es una DLL, hacer el binding de este modo es bastante fácil, ya que el código que tendrás que ahcer es mínimo; te limitarías a estructurar las funciones y clases.
Si la librería no es una DLL, pues bueno, habría que ver cada caso.


Título: Re: [Curiosidad] Como hacer bindings de una librería
Publicado por: Becerra en 4 Diciembre 2016, 22:11 pm
Hola

Entonces teniendo la .DLL es más sencillo de lo que imaginaba, aunque sigue siendo un trabajo enorme, ya que habría que crear un montón de funciones, clases, etc y procurar no dejar fuera características de la librería,

Y si la librería se actualiza con nuevas características, te toca implementar todo lo nuevo....

Uff, ¡¡ hace falta mucho tiempo libre !! XD

Un saludo