Sigo viendo personas escribiendo envoltorios para, por ejemplo, un módulo escrito en lenguaje X para usarlo en lenguaje Y. Quería saber los conceptos básicos de cómo escribir tales envoltorios. ¿De dónde comienza uno? Mi pregunta aquí es más específica para libgnokii, ¿cómo empiezo a escribir enlaces de python para ello?Escribiendo enlaces y envoltorios
Respuesta
Puedes comenzar leyendo esto: extending python with c or c++ Y luego, cuando decidas que es demasiada molestia, puedes consultar swig o posiblemente Boost.Python. ctypes también puede ser útil.
He hecho el ajuste manual de las clases de C++ y he usado swig. Swig era mucho más fácil de usar, pero al final yo quería hacer cosas que no se hacían fácilmente (o simplemente era demasiado flojo para descubrir cómo). Así que terminé haciendo envoltura manual. Es un poco de trabajo, pero si conoces un poco de C, es muy factible.
Puede comenzar mirando here para obtener información sobre la extensión de Python con C. Probablemente quiera pensar en cómo traducir la API de libgnokii en algo Pythonic mientras lo hace. Si no quiere hacer mucho trabajo, puede simplemente escribir un envoltorio delgado que traduzca todas las llamadas de API gnokii a funciones de Python.
- 1. .Net (dotNet) envoltorios para OpenCV?
- 2. Comparar cadenas por envoltorios SSE4
- 3. Escribiendo el combinador Y
- 4. ¿Java tiene envoltorios API alrededor de subversión y Git?
- 5. Configurando drools y maven y escribiendo hello world application usándolos
- 6. Git y enlaces duros
- 7. Enlaces canónicos y paginación
- 8. Enlaces HTML y usabilidad
- 9. Prueba de envoltorios inteligentes para bibliotecas de terceros
- 10. Encabezado adhesivo y enlaces internos
- 11. escribiendo para sobresalir en java
- 12. JXL y Timezone escribiendo un Excel
- 13. Escribiendo un ensamblador, necesito ayuda
- 14. ¿Crea automáticamente envoltorios de C# desde c encabezados?
- 15. Envoltorios de algoritmo STL estándar/de facto C++
- 16. ¿Cómo escriben envoltorios de idioma diferentes para la misma biblioteca?
- 17. Cómo detectar gestos en OpenKinect (con envoltorios de Python)
- 18. Python Lambdas y enlaces de variable
- 19. Enlace duro y enlaces simbólicos en Unix
- 20. UILabel - cadena como texto y enlaces
- 21. Cómo reemplazar enlaces utilizando lxml y iterlinks
- 22. subrepo, hg clon y enlaces simbólicos
- 23. Convierta las URL y @ * en los enlaces
- 24. Azul y morado Enlaces predeterminados, ¿cómo eliminarlos?
- 25. Escribiendo Great Software
- 26. Escribiendo controladores en C#
- 27. Etimología "pato escribiendo"?
- 28. escribiendo módulos recursivas
- 29. iPhone escribiendo datos binarios
- 30. Escribiendo varios argumentos varargin
¿Cómo hacer las cosas Pythonic significaría escribir toda la biblioteca como un módulo desde el principio? – tsudot
No, no necesariamente. Un ejemplo de lo que hice: tuve una clase de C++ que necesitaba hacer un objeto antes de poder usar una función (en este caso, la función debería haber sido estática). En lugar de hacer que el usuario del módulo python siga los mismos pasos, simplemente construí un objeto de esa clase en mi extensión python y expuse la función como una función en un módulo python, ocultando el hecho de que pertenecía a una clase, que no estaba No es realmente necesario. Entonces, ordenando un poco las interfaces. –