Librería Boost en Visual Studio

Esta es una librería de código abierto que nos permite extender las capacidades el lenguaje de programación C++, boost puede ser usada en cualquier tipo de proyectos ya sea libres o comerciales ya que se distribuye bajo licencia BSD, en la actualidad cuenta con un gran numero de librerías, incluidas las bibliotecas de álgebra lineal, la generación de números pseudoaleatorios, multihilos, procesamiento de imágenes, expresiones regulares, pruebas unitarias, entre otros.   

Para descargar la biblioteca Boost http://www.boost.org/users/download/

En este enlace encontraremos la versión mas reciente de la biblioteca boost, descargaremos un archivo comprimido, podemos también optar por descargar la versión pre construida pero no será necesario, una ves lo hayamos hecho veremos como usarla en Visual Studio.


Boost en Visual Studio


La mayoría de las bibliotecas Boost están basadas en cabeceras, funciones en línea y plantillas, por lo que no es necesario construirlas para usarlas, sin embargo algunas si lo requieren, estas son algunas de ellas:
  • Boost.Chrono
    Boost.Context
    Boost.Filesystem
    Boost.GraphParallel
    Boost.IOStreams
    Boost.Locale
    Boost.MPI
    Boost.ProgramOptions
    Boost.Python
    Boost.Regex
    Boost.Serialization
    Boost.Signals
    Boost.System
    Boost.Thread
    Boost.Timer
    Boost.Wave
Para información mas detallada visitar la documentación oficial http://www.boost.org/
Veamos como usar las bibliotecas boost que no requieren ser construidas:
Primero como siempre creamos nuestro proyecto C/C++ en visual studio, elegiré una aplicación C++ de consola, en las opciones indicare que deseo crear un proyecto vacío, de este modo:

boost visual c
Una vez tengamos el proyecto creado solo haremos una configuración, el archivo que comprimido que hemos descargado con la biblioteca boost lo descomprimiremos en una carpeta en donde lo deseemos, hecho esto vamos al menú principal PROYECTO / Propiedades, en la opción directorios de inclusión adicionales indicaremos la carpeta en donde descomprimimos boost.

boost c
Con esto ya podremos trabajar con la librería boost, siempre y cuando no usemos ninguna librería que requiera construcción, para probar la configuración veamos un pequeño ejemplo de lo que podemos hacer con boost.

Calcular el valor hash de una cadena:

//+++++ Tutor de Programacion +++++++++
//Ejemplo de Uso de la biblioteca Boost
//Calcular el Valor hash de una cadena.

#include <iostream>
#include "boost\functional\hash.hpp"

void main()
{
	boost::hash<std::string> string_hash;
	std::cout << "Hash de cadena: "
		      << string_hash("Tutor de Programacion") << std::endl;
	std::cin.ignore();
}

Construcción de la Biblioteca Boost para Visual Studio


Como ya hemos mencionado algunas librerías requieren construcción antes de ser utilizadas por ejemplo si intentamos usar expresiones regulares a la hora de la compilación de este código, veremos el correspondiente error:

//+++++ Tutor de Programacion +++++++++
//Ejemplo de Uso de la biblioteca Boost
//Uso de Expresiones Regulares

#include <iostream>
#include <string>
#include "boost/regex.hpp"

using std::string;
using std::cout;
using std::endl;

void main()
{
	boost::regex expression("J.*\\d[0-35-9]-\\d\\d-\\d\\d");

	string string1 = "Jane's Birthday is 05-12-75\n"
		"Dave's Birthday is 11-04-68\n"
		"John's Birthday is 04-28-73\n"
		"Joe's Birthday is 12-17-77";

	boost::smatch match;

	while (boost::regex_search(string1, match, expression,
		boost::match_not_dot_newline))
	{
		cout << match << endl;
		string1 = match.suffix();
	}

	std::cin.ignore();
}

Error    1    error LNK1104: no se puede abrir el archivo 'libboost_regex-vc120-mt-gd-1_55.lib'    C:\Users\Carmelo\Documents\Visual Studio 2013\ProjectsC++\UsoBoost\UsoBoost\LINK    UsoBoost

Esto nos indica que necesitamos construir esta librería, veamos como se hace, el proceso muestra como hacer la construcción para todas las librerías incluidas boost.

Compilación de la Librería Boost 1.55


1. Localizamos la capeta donde descomprimimos la librería, abrimos una ventana de comandos en esa carpeta o abrimos la ventana de comandos (cmd) y navegamos a la carpeta mediante el comando cd, si usamos Windows 8 abrimos la carpeta, vamos al menú principal de la carpeta: Archivo / Abrir símbolo de sistema

cmd boost 1.55
2. Ahora escribimos el siguiente comando: bootstrap ; Esperamos a que termine de hacer su trabajo, cuando termine nos mostrara el mensaje:

boost build
3. El siguiente comando a ejecutar es: .\b2 ; Este iniciara el proceso de construcción, tardara un poco, debemos espera a que termine.

4. Luego de un par de minutos cuando la construcción haya terminado, procedemos con el ultimo comando, este creara la carpeta C:\Boost en donde se almacenaran los archivos que acabamos de crear. Ejecutamos el comando: b2 install ; Esperamos a que termine, tardara algunos minutos.

5. Si hemos hecho todo bien tendremos la carpeta Boost en el disco C:\ que contiene las carpetas en donde se encuentran los archivos de encabezado y la librerías compiladas.

Configurar Visual Studio para usar Boost


Para poder usar el código que usa expresiones regulares u otras librerías de boost que requieren construcción, vamos a configurar visual studio para usar las librerías que acabamos de construir.

Primero indicamos donde buscar los archivos de inclusión adicionales como lo hicimos anteriormente solo que esta vez usaremos los archivos de la carpeta C:\Boost que acabamos de crear:

Captura de pantalla (390)
Segundo en esta misma ventana de propiedades, vamos a indicar donde buscar los archivos .lib:

boost build lib
Con esto ya podremos usar la librería boost con todas sus funcionalidades, ya podemos compilar el código que anteriormente producía error.

La carpeta donde descomprimimos la librería boost inicialmente ya la podemos eliminar, salvo que necesitemos la documentación o la deseemos tener como referencia.

Comentarios

Temas relacionados

Entradas populares de este blog

tkinter Grid

Conectar SQL Server con Java

Controles y Contenedores JavaFX 8 - I

Histogramas OpenCV Python