Zator Systems:  Tecnología de la información para el conocimiento.


Librerías C/C++

En esta página se incluye una selección de librerías de apoyo a la programación en C/C++.  Si piensa abordar algún desarrollo medianamente importante y cree que no son suficientes las herramientas que proporciona el lenguaje, antes de reinventar la rueda, es aconsejable que empiece a buscar por ahí (o por aquí). Es más que posible que eso que busca ya esté inventado.


BeeCrypt  Librería criptográfica
     www.virtualunlimited.com

BeeCrypt es una librería criptográfica de código abierto que proporciona una encriptación rápida y potente.  Puede ser utilizada en proyectos de código abierto o comerciales.  Incluye generadores aleatorios;  bloques de cifras;  función hash (función unilateral inconvertible), y mensaje de autentificación de códigos.  Está optimizado para C e implementación en muchos algoritmos, incluyendo Blowfish, Diffie-Hellman, ElGamal, y SHA-1.

Blitz++    www.oonumerics.org/blitz/

 Blitz++ es una librería "Open source" destinada a utilizar los beneficios del C++ y de la POO en la computación científica; principalmente cálculo matricial & vectorial/tensorial.  Básicamente se trata de aprovechar, entre otras, las ventajas del encapsulamiento; herencia; polimorfismo; sobrecarga de operadores y programación genérica (plantillas), pero sin los inconvenientes que hasta ahora imponían los lenguajes destinados tradicionalmente a estos menesteres (como Fortran) en lo que se refiere a la velocidad.  Esta librería está auspiciada por la oonumerics.org (Scientific Computing in Object-Oriented Languages).

Boost     www.boost.org/ 

Lo primero que habría que destacar de estas librerías es su alta calidad técnica. Además son gratuitas; pueden ser utilizadas libremente en cualquier proyecto, e incluyen código fuente y abundante documentación.  En realidad las Boost son un conjunto heterogéneo de utilidades que tienen su origen en una iniciativa de algunos miembros del comité de estandarización del C++, aunque posteriormente han recibido aportaciones de múltiples autores. Comprenden un extenso catálogo que incluye los siguientes tópicos:  String and text processing;  Containers;  Iterators;  Algorithms;  Function Objects and higher-order programming; Generic Programming;  Template Metaprogramming;  Preprocessor Metaprogramming;  Concurrent Programming;  Math and numerics;  Correctness and testing;  Data structures;  Input/Output;  Inter-language support;  Memory;  Parsing;  Miscellaneous.  El proceso de selección para que una librería sea admitida, es público y bastante estricto, lo que garantiza que el mero hecho aparecer en la colección es un marchamo de la calidad y nivel técnico a que antes aludíamos.  En realidad esta colección es una especie de antesala oficiosa del Estándar, ya que algunas de sus componentes son analizadas y evaluadas por los miembros del comité como candidatas a ser incluidas en futuras revisiones del estándar C++. 

Corrección de errores  ECC    http://eccpage.com

Esta página está dedicada a programas escritos en C/C++ y MATLAB que implementan rutinas de codificación y decodificación de control de errores (ECC Error-Correction-Codes) muy populares, tales como Reed-Solomon, BCH, the binary Golay, binary Goppa, decodificador Viterbi, y otros.

C++ portable components    www.appinf.com/

Librerías C++ que se integran perfectamente con la Librería Estándar, cubriendo aspectos no contempladas por esta. Están disponibles para casi cualquier plataforma que disponga de un compilador C++ Estándar, incluyendo MS Visual C++; GCC para Mac y Linux; Sun ONE Studio; Compaq C++ y HP ANSI C++.  Entre otros, proporcionan los siguientes servicios: una librería NET que ofrece soporte para protocolos y servidores HTTP, FTP, SMTP y otros; una librería XML que proporciona un analizador/escritor XML, e interfaz para las especificaciones DOM (Document Object Model); una librería de utilidades con clases para procesar ficheros de configuración y comandos del shell (command line arguments), además de un marco de trabajo para crear aplicaciones servidor implementadas como demonios Unix o servicios Windows (según el caso). Finalmente, una librería DBlite, que ofrece soporte para una database SQL, de forma que pueden manejarse cómodamente datos de cualquier tipo sin necesidad de utilizar databases externas.

En el diseño ha primado la consideración de hacerla "ligera", de forma que es adecuada para el desarrollo de aplicaciones C++ en todo tipo de sistemas, especialmente dispositivos móviles y "embebidos".  Está disponible en dos modelos de licencia: Open Source y comercial.

DLsoft     www.dlsoft.com/

Si necesita añadir soporte para códigos de barras en sus programas C++, este fabricante ofrece una extensa selección de librerías que  pueden ser útiles.  Dispone de versiones VCL desarrolladas en Pascal (clases derivadas de TImage) que pueden ser utilizadas con el compilador Borland C/C++, y de versiones para MS Visual C++.

Firebird    www.firebirdsql.org/

Firebird es una base de datos relacional RDBMS ("Relational Data Base Management System") multiplataforma, que ofrece la mayoría de las características del Estándar ANSI SQL junto con un elevado rendimiento, excelente concurrencia, y un potente lenguaje que permite almacenar procedimientos y disparadores ("triggers"). Ofrece soporte nativo para Linux; Windows; una gran variedad de plataformas Unix; Solaris, y MacOS. Soporta distintos métodos de conexión, incluyendo componentes nativos para C/C++ [2]. Está exento de cualquier exigencia de registro, licencia, o derechos. Los desarrollos que lo utilicen pueden ser distribuidos libremente incluso si se trata de productos comerciales.

Está disponible en tres versiones: SuperServer, Classic y Embedded.  La primera es la más usual; SuperServer utiliza un solo módulo para atender todas las conexiones. Este módulo comparte su memoria entre los clientes de la database, utilizando un hilo ("thread") para manejar cada conexión. La versión Classic del servidor es apropiada para máquinas dotadas de SMP ("Symmetric Multyprocessing"). Crea un nuevo proceso para cada conexión que debe atender. Finalmente, la versión Embedded consiste en una librería dinámica (.DLL) de 1.5 MB, que contiene la funcionalidad de un servidor. Es apropiada para aplicaciones que requieran la capacidad de una RDBMS sin las complicaciones de instalación y mantenimiento de un servidor (una situación análoga a la ofrecida por SQLite ).

En realidad, Firebird arrastra una larga historia, y experiencia con las RDBs, de más de 20 años. La tecnología subyacente ha sido explotada desde 1984 bajo distintos nombres. El último Interbase 6.0, cuando en Agosto del 2000, su código fue distribuido como abierto ("Open Source") por Borland.

IT++    http://itpp.sourceforge.net/ 

IT++ es una librería C++ de funciones y clases para proceso de señales, incluyendo proceso del habla y comunicaciones, que tiene su origen en el Departamento de Teoría de la Información de la Universidad Tecnológica de Chalmers en Suecia y que se distribuye bajo la licencia GNU GPL. Ha sido desarrollada por investigadores y estudiosos de distintas universidades. También está siendo desarrollada como parte de NEWCOM (European Network of Excellence in Wireless Communications).  Está formada alrededor de un conjunto de clases genéricas de vectores y matrices,  junto con gran número de funciones para su manejo, que la hacen similar al popular Matlab. Para aumentar su seguridad, funcionalidad y velocidad, hace uso de distintas librerías "open-source". En particular BLAS, CBLAS, LAPACK y FFTW.  Puede funcionar bajo los sistemas GNU/Linux, Sun Solaris, Mac OS X y Microsoft Windows (en este último, a través de Cygwin, MinGW/MSYS, o MS Visual C++ .NET).

Jungo.  WinDriver         www.jungo.com

Se trata de una herramienta que simplifica el proceso de escribir drivers para diversos Sistemas Operativos, permitiendo utilizar los compiladores C++ más frecuentes (MS Visual C++, Borland, GCC y otros).

Entre los SO soportados están:  Windows 9x, NT/NT Embedded, 2000, Windows CE, Linux, Solaris, OS/2 y VxWorks.

Lateral ARTS  Simkin            www.simkin.co.uk

Simkin es un lenguaje de script que puede trabajar con C++, también con Java y XML.  Se trata de un producto de código abierto (open source).  La sintaxis es tan sencilla como la de JavaScript.  La versión para Visual C++ es una librería de 200 KB.

Simkin puede ser utilizado en multitud de formas, entre ellas:  Creación y manipulación de databases; sistemas de simulación; construir test de funcionamiento mediante scripts; incluir en una aplicación la funcionalidad de una "macro", etc.

LiDIA      www.informatik.tu-darmstadt.de

LiDIA es una librería para computación numérica de la Universidad de Tecnología de Darmstadt, según la descripción original:  "LiDIA is a C++ library for computational number theory which provides a collection of highly optimized implementations of various multiprecision data types and time-intensive algorithms.  Su distribución incluye el código fuente y es libre para usos no comerciales.

Además de las máquinas Sparc y Alpha, LiDIA puede utilizarse en los entornos ix86/Linux GNU.  En particular con las versiones del compilador g++ 3.x y posteriores.

Literal Arts.  Lenguaje embebible de script      www.simkin.co.uk

Simking es un lenguaje de script interpretado que trabaja con C++ (existe una versión para Java), y se distribuye bajo la licencia GNU "Open source".  Los escripts pueden ser alojados en ficheros de datos, incluyendo XML o en bases de datos.

Puede utilizarse para personalizar aplicaciones C++ mediante scripts que son interpretados por clases C++ que se proporcionan con el lenguaje.  Estas clases proporcionan una interfaz directa para escripts alojados en documentos XML o en árboles.

MarshallSoft. Librerías de comunicaciones      www.marshallsoft.com

Librerías de comunicaciones incluyendo protocolos IP para Internet y para comunicación serie, tanto para entornos Windows como DOS.  La empresa ofrece los siguientes paquetes:

  • Librerías Windows para e-mail:    SEE4C SMTP/POP3 Email Engine Library for C/C++

  • Librerías Windows FTP:    FCE4C FTP Client Engine Library for C/C++

  • Librerías de interfaz Winsock:    WIL4C Winsock Interface Library for C/C++

  • Marcador para Windows:    MDD4C MarshallSoft DUN Dialer for C/C++

  • Comunicaciones serie para Windows:  WSC4C Windows Standard Serial Comm Library for C/C++

  • Comunicaciones serie para DOS:  PCL4C Personal Communications Library for C/C++

MySQL++      www.mysql.com 

MySQL++ es una interfaz (API) de la popular base de datos relacional MySQL para C++.  Su propósito es hacerla funcionar mediante contenedores STL.

MySQL.  Database                    www.mysql.com

MySQL es un sistema de administración de una base de datos con soporte para múltiples usuarios que utiliza el lenguaje SQL estandarizado para el almacenamiento, actualización y acceso a información. Soporta varios lenguajes de programación: C, C++, Eiffel, Java, Perl, PHP, Python y TCL.

Dispone así mismo de diferentes GUIs, incluyendo versiones para Borland C++ y Microsoft Visual C++

Palisand. DalC++ Database Access Library       www.palisand.com

Se trata de una librería C++ orientadas a objetos que soporta Borland C++ Builder e incorpora drivers de MS Access y SQL Server.

Diseñada para desarrolladores de aplicaciones cliente/servidor que necesiten escribir aplicaciones no muy voluminosas, que deban soportar diversas bases de datos relacionales. Database Access Library se encarga de todas las transformaciones entre el paradigma orientado a objetos y el modelo relacional, sin renunciar por ello a ninguna ventaja de la programación orientada a objetos.

Otras características incluyen: soporte para asociaciones directas y bidireccionales 1-n y n-n, asociaciones 1-n restringidas, selección polimórfica explícita, soporte de esquemas de diseño sujeto-objeto, generación automática de esquemas y soporte de migración de esquemas.

PTypes    www.melikyan.com 

PTypes (C++ Portable Types Library) es una alternativa a la Librería Estándar de Plantillas (STL) de C++. Es un proyecto de código abierto mantenido por Hovik Melikyan que entre otras características incluye flujos de E/S, funcionamiento en modo multihebra y trabajo en red, ya que permite manejar conexiones IP.  Se trata de una librería multiplataforma que puede funcionar en los principales sistemas actualmente en uso (FreeBSD, Linux, SunOS, Mac OS X y Windows).

SFL    www.imatix.com 

SFL ("Standard Function Library") es una librería de funciones C/C++ escrita en C estándar, que contiene aproximadamente 450 funciones relativas a las siguientes áreas: Compression, encryption, and encoding; Datatype conversion and formatting; Dates, times, and calendars; Directory and environment access; User and process groups; Inverted bitmap indices; Symbol tables; Error message files; Configuration files; String manipulation and searching; File access; Internet socket access; Internet programming (MIME, CGI);  SMTP (e-mail) access; Server (batch) programming; Program tracing.

SFL ha sido portada a MS-DOS; Windows; OS/2; Linux; Digital OpenVMS y distintos sistemas UNIX (IBM AIX, SunOS, HP/UX, Solaris, NetBSD, FreeBSD, SCO OpenServer, Digital UNIX).  Se distribuye con una completa documentación y con el código fuente.  Sus creadores (iMatrix) la facilitan bajo la licencia Open Source, de forma que puede ser utilizada y distribuida, incluso en aplicaciones comerciales mediante una licencia muy permisiva (solo se exige que en la documentación del producto se incluya la siguiente frase: "This product uses parts of the iMatix SFL, Copyright © 1991-2000 iMatix Corporation <http://www.imatix.com>".

SQLAPI++ Library    www.sqlapi.com

Es una librería de interfaz para acceder a las bases de datos de los motores SQL más comunes:   Oracle, SQLServer, InterBase, DB2, Informix, Sybase, SQLBase y ODBC.  Utiliza APIs propios, y las apliaciones desarrolladas con esta librería se ejecutan limpia y eficazmente.  Incluye una interfaz de usuario que permite acceder a las características específicas de cada base de datos.

SQLite    www.sqlite.org

Seguramente no es exagerado decir que prácticamente cualquier aplicación, incluyendo las que no son específicamente algún tipo de database (un catálogo de música o de fotos por ejemplo), necesita manejar algunos datos, aunque solo sean de configuración inicial, últimos ficheros/direcciones utilizadas, etc.  Tampoco sería exagerado decir que, casi con seguridad, ya dispone en su equipo de alguna aplicación que utilice esta librería sin que usted se haya percatado de ello, ya que multitud de aplicaciones comerciales y freeware la utilizan. Por ejemplo, Firefox y Thunderbird y Sunbird; el software de muchos teléfonos celulares, y los sistemas operativos Mac OS X de Apple o Solaris de Sun.

Si desea beneficiarse de la potencia de la sintaxis SQL para sus datos sin la aparatosidad de los motores SQL tradicionales, seguramente SQLite es la opción más acertada.  Su autor original, Richard Hipp, ha colocado su código en el dominio público, con lo que cualquiera es libre de copiar, modificar, publicar, usar, compilar, vender o distribuir el código original en forma de fuente o como binario compilado, y para cualquier propósito, comercial o no comercial.

SQLite ofrece la potencia de un motor de base de datos relacional de cero-configuración, pensado para ser incluido ("embedded") en cualquier aplicación C/C++ que lo necesite [1]. Soporta databases de hasta 2 TeraBytes (241 Bytes), pero su código se reduce a una librería de menos de 250 KBytes en su configuración completa, que puede ser reducida a unos 150 Kbytes si se omiten las funcionalidades no esenciales.  Además de una interfaz C/C++ perfectamente documentada, dispone de su propio TCL ("Tool Command Languaje") que permite controlar las bases de datos mediante comandos de consola o ficheros script.  Existen también interfaces ("wrappers") para distintos lenguajes, incluyendo ADA, Common Lisp, Java, JavaScript, Perl, PHP, Python, etc.  

Str Library     www.utilitycode.com 

Str Library es una librería de clases para desarrollos C++ adecuada al tratamiento de cadenas ("Strings").  Especialmente adecuada para aplicaciones multihebra, se caracteriza por su eficiencia y velocidad.

Template Numerical Toolkit  TNT     math.nist.gov

Conjunto de herramientas para computación numérica de Roldan Pozo, de la División de Matemáticas y Ciencias de la Computación (MCSD) del Instituto USA de Estandarización y Tecnología (NIST).  Es una colección de interfaces e implementaciones de objetos numéricos y estructuras básicas, como matrices multidimensionales y dispersas, usadas frecuentemente en aplicaciones numéricas y cálculos científicos en C++.

Virtual Unlimited.  Aplicaciones y librerías para seguridad       www.virtualunlimited.com

Productos para criptografía y seguridad;  entre otros BeeCrypt, una librería suministrada bajo la licencia GNU de código abierto.  Incluye implementaciones en C y ensamblador de varios algoritmos de cifrado y encriptación, incluyendo Blowfish, MD5, SHA-1 y ElGamal. BeeCrypt ha sido diseñada como una herramienta de uso general que puede ser utilizada en multitud de circunstancias.  Existen dos versiones:  Una escrita en C y ensamblador; otra en Java.

Xceed Software.  Aplicaciones y librerías varias     www.xceedsoft.com

Xceed Software ofrece diversas herramientas para programación:

  • Zip Compression Library

  • FTP Library

  • Zip Self-Extractor Module

  • Winsock Library

  • Backup Library

  • Absolute Packager

Swig         www.swig.org/

SWIG es una herramienta de desarrollo que permite conectar programas escritos en C/C++ con otros lenguajes de alto nivel, principalmente lenguajes de "script", tales como Perl, Python, Tcl/Tk, Ruby, Guile, MzScheme y PHP; aunque entre los lenguajes soportados se incluyen otros como Java y Eiffel. Principalmente se utiliza para crear entornos de programación interpretados de alto nivel y herramientas para construir interfaces de usuario.  Puede ser utilizado y distribuido libremente para uso comercial y privado.

  Inicio.


[1]  Últimamente algunos fabricantes de RDBMS ("Relational DataBase Management System") han ofrecido versiones ligeras ("downsized") de sus gestores de bases de datos de gran escala para adaptarlos a aplicaciones embebidas.  Sin embargo, SQLite es el único de tales RDBMS que ha sido específicamente diseñado desde su origen para ofrecer esta particularidad. Además, su código es de dominio público.  En el fichero de cabecera sqlite3.h puede leerse la siguiente nota de copyright:

** The author disclaims copyright to this source code. In place of

** a legal notice, here is a blessing:

**

** May you do good and not evil.

** May you find forgiveness for yourself and forgive others.

** May you share freely, never taking more than you give.

**

*************************************************************************


[2]  Existen librerías auxiliares que puede facilitar esta labor. Por ejemplo, IBpp www.ibpp.org/, una librería de clases (libre de dependencias de cualquier tipo) que proporciona acceso a Firebird desde cualquier aplicación C++, ya sea visual o en modo consola. En realidad IBpp es una interfaz que, a través de distintas clases muy fáciles de utilizar, proporciona todo lo necesario para acceder a las bases de datos Firebird, así como a las tareas de mantenimiento y administración del servidor.