Aunque entiendo más o menos qué es un enlace de idioma, me cuesta entender cómo funcionan. ¿Podría alguien explicar cómo se hace un enlace de Java para WinAPI, por ejemplo?¿Cómo se hace un lenguaje vinculante?
Respuesta
Encontrará resultados mucho mejores si busca Foreign Function Interface o FFI. El FFI es lo que le permite llamar a las funciones que se escribieron en un idioma diferente, es decir, las extranjeras. Los diferentes lenguajes y tiempos de ejecución tienen FFI muy diferentes y tendrás que aprender cada uno individualmente. Aprender un FFI también te obliga a saber un poco más sobre las funciones internas de tu lenguaje y su tiempo de ejecución de lo que normalmente estás acostumbrado. Algunas FFI te hacen escribir código en el idioma de destino, como Haskell (donde el código FFI debe escribirse en Haskell) y otras te hacen escribir código en el idioma de origen, como Python (donde el código FFI debe escribirse en C).
Algunos lenguajes no usan el término FFI (aunque sería bueno si lo hicieran). Para Java, se llama Java Native Interface, o JNI.
Los idiomas (generalmente) tienen una sintaxis definida para llamar al código "nativo". Por lo tanto, si tiene una biblioteca que exporta el método foo()
, realizar un biding significa que creará, en su ejemplo, una clase Java con el método foo()
. De esta forma, puede llamar al MyBinding.foo()
desde el resto de un código, no habrá diferencia si fue un método de Java puro o un código de C compilado.
De nuevo para Java, es probable que desee consultar la documentación JNI. Otros idiomas tienen mecanismos similares. Hay herramientas como SIP que tomarán varios archivos de encabezado C (++) y producirán enlaces de Python para él. Creo que otros lenguajes también podrían tener herramientas similares.
- 1. ¿Qué hace que un lenguaje sea orientado a objetos?
- 2. ¿Qué hace que Ruby sea un lenguaje elegante?
- 3. ¿Cómo se hace un impulso heterogéneo :: mapa?
- 4. ¿Cómo se hace un rango en Rust?
- 5. ¿Cómo hace un lenguaje macro habilitado para hacer un seguimiento del código fuente para la depuración?
- 6. WPF Expander IsExpanded vinculante
- 7. VMWare ctrl-z vinculante, cómo quitar
- 8. Javascript C++ vinculante?
- 9. ¿Cómo se hace el polimorfismo en Ruby?
- 10. ¿Cómo se hace que un componente UIPickerView se ajuste?
- 11. vinculante en WinForms desplegable
- 12. JAXB java.util.Map vinculante
- 13. WPF Combobox vinculante
- 14. const referencia vinculante a un rvalue
- 15. WPF vinculante StringFormat sintaxis
- 16. Greasemonkey onclick vinculante
- 17. ¿OneWay vinculante en WinForms?
- 18. cómo se implementó lisp en lenguaje ensamblador?
- 19. plantilla de knockout vinculante
- 20. Spring MVC vinculante
- 21. ¿Qué características de lenguaje se requieren en un lenguaje de programación para hacer un compilador?
- 22. ¿Qué es un lenguaje lambda?
- 23. servicio OSGi declarativa condicional vinculante
- 24. Un 'vinculante' sólo se puede establecer en un DependencyProperty de DependencyObject
- 25. Crear un lenguaje de scripting
- 26. ¿Interfaz en un lenguaje dinámico?
- 27. WebService Excepción de cliente: no se puede importar wsdl: vinculante
- 28. ¿Se omite Visibility = IsCollapsed la parte vinculante de datos?
- 29. ¿Cómo se hace alias Elija un método (LINQ)
- 30. ¿Cómo se hace una cadena como un archivo erb?
Gracias. Estaba al tanto de JNI, en realidad. Pero no sabía dónde debería cavar para obtener más información. – qeek