A continuación encontrarás traducido al castellano el artículo escrito por Paul Lefebvre y publicado originalmente en el Blog oficial de Xojo.
La capacidad de crear una librería compilada con Xojo ha sido una característica solicitada desde hace mucho tiempo. Desde Xojo 2025 Release 3, ya está disponible el soporte de creación de Librerías como Preview. He aquí más información sobre lo que es y cómo puedes usar dicha capacidad.
¿Qué es una Librería?
Una Librería es una colección de código reutilizable, ya escrito, que puede contener métodos, classes y elementos de IU (Interza de Usuario). Hasta ahora el modo de distribuir una librería para su uso con Xojo era mediante la creación de un Plugin o bien reutilizar manualmente elementos de un proyecto con otros proyectos. Ambos enfoques tienen sus ventajas y desventajas.
Los plugins están compilados y no exponen código fuente, pero los plugins no pueden crearse utilizando Xojo y se crean generalmente utilizando los lenguajes C/C++ en combinación con el Plugin SDK de Xojo. Compartir elementos de proyecto de Xojo está bien cuando se trata de proyectos internos o bien proyectos de código abierto, pero no es ideal en el caso de librerías comerciales. Pueden resultar más complejos de añadir manualmente a un proyecto y se han de volver a compilar junto con el proyecto, lo que representa ralentizar el proceso de depuración.
Con una Librería de Xojo ahora puedes crear tu propia librería compilada utilizando Xojo. Esta librería puede contener prácticamente cualquier elemento de proyecto de Xojo y puede utilizarse con facilidad en otros proyectos de Xojo porque se distribuye como un único archivo.
A un nivel superior, creas la librería con Xojo, añades los elementos de proyecto en ella y creas un archivo de paquete de Librería. Luego, otros proyectos pueden utilizar dicho paquete de Librería, proporcionándoles así acceso a los elementos incluidos en dicha Librería.
Crear una Librería
Este es un breve resumen sobre cómo crear una Librería Xojo:
- En un proyecto Desktop, Web, Consola o iOS, añade una Librería seleccionando la opción Insert > Library.
- Añade los elementos de proyecto que desses a la Librería. Están soportados cualquier elemento de proyecto de Xojo, exceptuando la clase Worker.
- Compila el proyecto (botón Build). Creará la app principal (la cual debería de servir como una app de pruebas para la Librería) y un paquete independiente de archivo de Librería (con la extensión .xojo_library).
- Puedes situar este paquete de Librería junto con cualquier otro proyecto (en el disco) y se cargará cuando dicho proyecto se abra en Xojo. Entonces, podrás utilizar en dicho proyecto las clases, métodos y los elementos de IU incluidos en la Librería. Si por el contrario pones el archivo de paquete de librería en la carpeta Plugins, entonces estará disponible para todos los proyectos disponibles.
El mejor modo de mostrarlo es mediante un ejemplo rápido. Crea un proyecto Desktop y añádele una Librería, acción que añadirá el elemento Library1 al Navegador. Cambia su nombre en el panel Inspector para que sea “LibHello”.
Con LibHello aún seleccionado, selecciona la opción Insert > Class. Esto añadirá Class1 al elemento LibHello. Esta nueva clase forma ahora parte de la Librería. Con el elemento Class1 seleccionado, cambia su nombre a StringStuff.
Ahora puedes añadir los métodos o propiedades que desees a la clase. En nuestro ejemplo crearemos un simple método que voltee la cadena.
Public Function ReverseString(s As String) As String
Var newString As String
For Each c As String In s.Characters
newString = c + newString
Next
Return newString
End Function
La Librería podría contener muchas otras cosas, por supuesto, pero para mentener las cosas simples, esta librería sólo tendrá una clase con este único método. Así es como se verá en el proyecto:
Lo primero que tenemos que hacer es probar este método ReverseString de la Librería. Añade un botón a Window1 y deja que se encargue de llamar a esta función, verificando el resultado:
Var stuff As New StringStuff
Var result As String = stuff.ReverseString("Xojo")
MessageBox(result)
Cuando ejecutes la app, verás la siguiente salida:
Como puedes observar, esto no es muy distinto a lo que harías con un proyecto de Xojo. El siguiente paso consiste en crear el paquete de Librería para que pueda utilizarse en otros proyectos.
En el área Build Settings, selecciona Shared. Aquí es donde podrás introducir información sobre la librería y que podrá ser vista por quienes la usen.
- En el campo Version, introduce “1.0”.
- En el campo Copyright, introduce “Acme, Inc.”
- En el campo Description, introduce “A Xojo Library test.”
También en el área Build Settings, marca las casillas correspondientes a las plataformas que quieras soportar en tu Librería. En la mayoría de los casos, querrás seleccionar macOS, Windows y Linux.
Haz clic ahora en el botón Build. Esto crear la app de forma habitual, pero también creará un archivo de paquete de Librería independiente (LibHello.xojo_library en el caso de este ejemplo), y que será el que podrás utilizar en otros proyectos.
Usar la Librería
Ahora que has creado tu paquete de Librería, puedes utilizarlo en otros proyectos Xojo. La anterior librería se creó en un proyecto Desktop, de modo que sólo se podrá utilizar en otros proyectos Desktop. Así que lo primero será crear un nuevo proyecto Desktop (llámalo MyTest), guárdalo y ciérralo.
Una vez guardado, dirígete al Escritorio o Explorador y sitúa una copia del archivo LibHello.xojo_library (en su ubicación de compilación) junto con el archivo de proyecto guardado (MyTest).
Regresa a Xojo y abre el proyecto MyTest. El proyecto se abrirá con normalidad pero ahora también se cargará la Librería. Puedes verlo accediendo a la ventana About Xojo y seleccionando a continuación la pestaña Plugins & Libraries. Aquí podrás ver el nombre de la Librería junto con la información introducida previamente. (Haz doble clic sobre la fila correspondiente a la Librería para ver su descripción.)
Volviendo al proyecto MyTest, ahora podrás utilizar la Librería. Añade un botón a la ventana y que se encargue de llamar a la función StringReverse del mismo modo que hiciste anteriormente:
Var stuff As New StringStuff
Var result As String = stuff.ReverseString("Xojo")
MessageBox(result)
Ejecuta ahora el proyecto y este utilizará la clase y su método como si fuese parte del proyecto mismo.
Estos son los fundamentos sobre la creación y uso de una Librería. Por supuesto puedes incluir lo que quieras en la Librería, pero como ocurre con cualquier Librería siempre es buena idea mantener las cosas bien organizadas.
Consideraciones
- Un paquete de Librería (que utiliza Zip) contiene código compilado y las definiciones para la API pública en dicho código.
- Sólo se puede añadir un elemento de Librería por proyecto cuando se esté desarrollando dicha librería.
- Un proyecto puede utilizar cualquier número de paquetes de Librería.
Para que una librería compilada funcione en todas las plataformas han de seleccionarse estas antes de compilar la librería. - Las Librerías sólo soportan compilaciones de 64 bits.
- Los paquetes de Librería han de situarse junto con el archivo del proyecto en el que se desean usar, y dichas librerías se cargan cuando se carga el proyecto.
- Los paquetes de Librería también se pueden situar en la carpeta Plugins. Dichas librerías se cargarán de forma separada para cada proyecto.
- Si los elementos de tu Librería tienen dependencias fuera de la Librería, entonces el paquete de la librería no podrá utilizarse en otro proyecto sin dichas dependencias. Por ejemplo, si un método de clase de una librería hace referencia a una clase del proyecto principal, entonces se compilará sin producir errores (dado que el proyecto principal está disponible); pero si quieres usar dicha Librería en otro proyecto, entonces obtendrás errores de enlace.
¿Por qué “Preview”?
Nos referimos a esta versión inicial de las Librerías de Xojo como una release Preview dado a que es muy nueva y queremos dar a los desarrolladores la oportunidad de probarla de modo que podamos pulir los potenciales problemas con los que se puedan encontrar. Te animamos a que intentes mover tu actual código reutilizable a una Librería para ayudar con las pruebas, al tiempo que mejoras tu flujo de trabajo. Si tienes proyectos de código abierto que sean esencialmente una Librería, puedes probar a convertirlos en un paquete de Librería de Xojo también.
Puedes distribuir de forma pública los paquetes de Librería, pero probablemente deberías etiquetarlos como una Preview, beta o versión de prueba hasta que quitemos la etiqueta “Preview” sobre dicha característica.
Estos son algunos paquetes de Librería correspondientes a algunas librerías de código abierto:
Visual Basic: Library, GitHub: https://github.com/xojo/VB
FileMaker: Library, GitHub
WinAPILib: Library, GitHub