5.3 The Lambda-CoAP Architecture: an IoT and Cloud Computing Integration
5.3.1 Lambda Architecture
5.3.2.3 Edge Computing Framework
Visual Studio proporciona, entre otros, el tipo de proyecto Win32 Static Library que permite crear una biblioteca de funciones (ficheros con extensión .lib) análo- ga a las proporcionadas por C. Esto nos permitirá agrupar todas nuestras funcio- nes de interés general en un solo fichero y utilizarlas en cualquier aplicación igual que utilizamos las funciones de la biblioteca C, printf, scanf, etc. Eso sí, antes de compilar una aplicación que utilice funciones de nuestra biblioteca, debemos es-
670 C/C++:CURSO DE PROGRAMACIÓN
pecificar en la lista de ficheros o en las opciones del enlazador (linker) el nombre de esa biblioteca.
Para crear una de estas bibliotecas siga los pasos indicados a continuación. Como ejemplo, vamos a crear una biblioteca hash.lib con las funciones incluidas en el fichero cap12\hash\hash.c incluido en el ZIP que acompaña al libro.
1. Ejecute el entorno de desarrollo de Visual Studio. 2. Seleccione la orden Archivo > Nuevo > Proyecto.
3. Seleccione el tipo de proyecto Win32 y la plantilla Aplicación de consola Win32. Escriba el nombre del proyecto en la caja Nombre y en la caja Ubica- ción seleccione el directorio donde desea crear este proyecto. En nuestro caso vamos a dar al proyecto el nombre Hash. Pulse el botón Aceptar. Se visualiza la siguiente ventana:
4. En esta ventana seleccione Biblioteca estática, no seleccione Encabezado precompilado y haga clic en el botón Finalizar.
5. Ahora tenemos un proyecto vacío. Ejecute la orden Proyecto > Agregar ele- mento existente y añada el fichero o los ficheros que contengan las funciones que desea incluir en su biblioteca (hash.lib), así como los ficheros de cabecera necesarios para poder compilar el código escrito en cada una de las funciones. En nuestro caso, según muestra la figura siguiente, añadiremos el fichero
APÉNDICE B: ENTORNOS DE DESARROLLO 671
hash.c que contiene las funciones de nuestro interés y el fichero de cabecera hash.h que incluye las declaraciones de esas funciones.
6. Finalmente, ejecute la orden Compilar > Compilar... para compilar el proyec- to y generar el fichero .lib. En nuestro caso se generará el fichero hash.lib con las funciones que incluía hash.c.
Para utilizar esta biblioteca vamos a realizar otro ejemplo. Cree un nuevo proyecto ApHash formado por los ficheros: apHash.c, hash.h y hash.lib. El fiche- ro apHash.c simplemente hará uso de las funciones de la biblioteca hash.lib lo que requerirá incluir el fichero hash.h. En la fase de enlace será necesario poder acceder a hash.lib, ya que apHash.c invoca a funciones de esta biblioteca. Por lo tanto, asegúrese de que ha añadido al proyecto la biblioteca hash.lib; después, compile y ejecute el proyecto.
672 C/C++:CURSO DE PROGRAMACIÓN
NETBEANS
Evidentemente, para poder escribir programas C/C++ en una plataforma Linux se necesita un entorno de desarrollo válido para dicha plataforma. NetBeans, entre otros, puede ser este entorno de desarrollo. Se trata de un EDI libre, gratuito y sin restricciones de uso. Puede descargarlo de https://netbeans.org.
Este EDI fue construido principalmente para el lenguaje Java, pero soporta otros lenguajes como C/C++. Está escrito en java, por lo que para ser ejecutado es necesario haber instalado previamente la máquina virtual de Java, que también puede descargar gratuitamente de http://java.com/es/.
En la figura siguiente se puede observar la interfaz gráfica de este entorno de desarrollo integrado:
APÉNDICE B: ENTORNOS DE DESARROLLO 673
Para personalizar el EDI, ejecute la orden Options del menú Tools.
Para editar y ejecutar el programa avance.c expuesto en el capítulo 1 utilizan- do este entorno de desarrollo, los pasos a seguir se indican a continuación:
1. Suponiendo que ya se está visualizando el entorno de desarrollo, ejecute la orden File > New Project (Archivo > Nuevo Proyecto). Se muestra la ventana New Project.
2. Seleccione C/C++ en la lista Categories (Categorías) y en la lista Projects (Proyectos) seleccione C/C++ Application (Aplicación C o C++). Después haga clic en el botón Next (siguiente). Se muestra la ventana New C/C++ Ap- plication.
3. Escriba el nombre del proyecto (Project Name); en nuestro caso será ProgC y, a continuación, seleccione la carpeta donde quiere guardarlo.
4. Asegúrese de que la casilla Create Main File (crear fichero/archivo principal) está marcada, establezca el nombre, en nuestro caso avance, y elija el lengua- je C (se añadirá la extensión correspondiente al fichero cuando se cree).
674 C/C++:CURSO DE PROGRAMACIÓN
5. Para finalizar haga clic en el botón Finish. El resultado será el siguiente:
El EDI crea la carpeta NetBeansProjects/ProgC en la que guardará el proyec- to compuesto en este caso por un solo fichero de código fuente, avance.c, que al- macenará el código correspondiente al programa.
APÉNDICE B: ENTORNOS DE DESARROLLO 675
En la ventana mostrada en la figura anterior distinguimos otras tres ventanas, algunas de ellas, con varios paneles. La que está en la parte superior derecha está mostrando el panel de edición para el código fuente de nuestra aplicación y tiene oculto el panel de inicio. La que está en la parte superior izquierda muestra el pa- nel de proyectos; este lista el nombre del proyecto y el nombre de los ficheros que componen el proyecto. Observe el fichero avance.c; contiene el código de las ac- ciones que tiene que llevar a cabo nuestra aplicación. También distinguimos otros nodos para otros tipos de ficheros, por ejemplo, para los ficheros de cabecera. Fi- nalmente, la ventana que hay debajo de la de proyectos permite navegar por el có- digo del proyecto. Puede visualizar otras ventanas desde el menú Window; por ejemplo, la ventana Output, que será utilizada para mostrar los resultados de la compilación y de la ejecución.
Una vez creado el esqueleto de la aplicación, editamos el código de la misma. En nuestro caso, este código ya fue expuesto en el capítulo 1.
El paso siguiente es construir el fichero ejecutable (fichero progc en la carpeta ProgC/dist/Debug/GNU-Linux-x86). Para ello, ejecute la orden Run > Build Pro- ject, o bien pulse la tecla F11. Si la compilación es correcta, puede pasar a ejecu- tar la aplicación ejecutando la orden Run > Run Project, o bien pulsando la tecla F6; observe el resultado en la ventana Output.
En este caso, la ventana Output muestra un error: En la función ‘log’: avan- ce.c:16: referencia a ‘log10’ sin definir. Para hacer uso de la biblioteca matemáti- ca en Linux tenemos que utilizar la opción –lm. Por ejemplo:
cc avance.c -o avance.exe -lm
La opción –lm indica al compilador que utilice la biblioteca matemática libm.a como alternativa a la biblioteca estándar libc.a.
Para especificar esta opción de compilación desde el entorno de desarrollo, haga clic con el botón secundario del ratón sobre el nombre del proyecto y selec- cione Properties (propiedades del proyecto). Se muestra la ventana que se mues- tra a continuación; seleccione Build > C Compiler > Additional Options y escriba la opción –lm.
676 C/C++:CURSO DE PROGRAMACIÓN
Cuando la aplicación necesite más de un fichero, el proceso es igual de senci- llo. Añadir otro fichero a una aplicación, por ejemplo un nuevo fichero que alma- cene una nueva clase, supone hacer clic con el botón derecho del ratón sobre el nombre del proyecto, elegir la orden New y seleccionar del menú contextual que se visualiza el tipo de elemento que se desea añadir.