¿Cómo compilar TDLib para Windows?

¿Cómo compilar TDLib para Windows?

TDLib (Telegram Database Library) es una librería multiplataforma de Telegram, escrita en C++ (de los creadores de KPHP) lanzada en abril del 2016 que está diseñada para aumentar la velocidad de Telegram y que ayuda a los desarrolladores a crear sus propias aplicaciones personalizadas usando el potencial de Telegram.

TDLib tiene todo el potencial de Telegram y su principal diferencia es que no tienes que preocuparte de realizar implementaciones de bajo nivel como la encriptación, la capa de transporte y la base de datos local.

Os vamos a enseñar como compilar TDLib para Windows paso a paso y de forma relativamente fácil para que podáis usar esta librería en vuestros proyectos.

Dependencias de TDLib:

  • C++14 usando compiladores compatibles (Clang 3.4+, GCC 4.9+, MSVC 19.0+ (Visual Studio 2015+), Intel C++ Compiler 17+)
  • OpenSSL
  • zlib
  • gperf (Solo para compilar)
  • CMake (3.0.2+, Solo para compilar)

Requisitos para compilar Tdlib en Windows:

  • Instalar Visual Studio 2017
  • Instalar gperf
  • Instalar CMAKE
  • Descargar y compilar vcpkg

Instalación Visual Studio 2017

Para poder realizar el proceso de compilación tenemos que instalar Visual Studio 2017, no os recomendamos usar la versión del 2019 debido a que actualmente da problemas con algunas librerías. Esto sucede debido a que Microsoft cambio el nombre del ejecutable de Visual Studio y bastantes librerías no son capaces de detectarlo por el momento.

Actualmente si buscas en el instalador de Visual Studio 2017 no lo encontraras debido a que esta integrado en el asistente de descarga de la versión del 2019. Para descargarlo entramos en este enlace y nos bajamos la versión "Community 2019".

Una vez ejecutado el instalador nos encontraremos con la siguiente pantalla:

Visual Studio seleccionar versión

Para poder descargar la versión del 2017 tenemos que salir de la pantalla de instalación de Visual Studio Community 2019 y acceder a la ventana "Visual Studio Installer", para ello hacemos click en la X y después nos vamos a la pestaña que pone "Disponibles". Una vez en esa pestaña buscamos "Visual Studio Community 2017" y pulsamos en el botón instalar.

Poco después se nos abre una nueva ventana en la que tenemos que buscar dentro de la pestaña "Cargas de Trabajo" el paquete (1) "Desarrollo para el escritorio con C++" y marcarlo haciendo click en sobre el. No es necesario que seleccionéis paquetes extra en el menú lateral derecho.

Instalación Visual Studio 2017 entorno C++

⚠️ Importante: Tenemos que instalar el paquete de idioma de inglés para evitar errores en el momento de la compilación por la falta de este paquete de idiomas

En la pestaña (2) "Paquetes de Idioma" debemos (3) seleccionar el paquete de idioma inglés como puedes ver en la siguiente imagen:

Descarga paquetes idiomas Visual Studio 2017

Para finalizar tenemos que ir al menú desplegable para seleccionar la opción (4) "Descargar todo y instalar" y pulsar el botón "Instalar". Una vez terminada la instalación cerramos el instalador y listo.

Instalación gperf

gperf es un programa que genera funciones hash perfectas para conjuntos de palabras clave y es una dependencia necesaria de TDLib. Para instalarla solo tienes que seguir los siguientes pasos:

1- Entrar en este enlace y descargarte el
archivo "gperf-3.0.1.exe"
2- Una vez descargado lo instalamos
3- Una vez instalado tenemos que crear una "varible de entorno" que apunte a la carpeta donde instalamos gperf y se encuentra el archivo gperf.exe

Para ello vamos al Panel de control, entramos en "Sistema y seguridad" y entramos en "Sistema". Otra opción es ir a "Este Equipo", hacer click derecho y seleccionar la opción "Propiedades".

Después pulsamos en la opción "Configuración avanzada del sistema" (1) que nos abre una ventana llamada "Propiedades del Sistema" y dentro encontramos un botón llamado "Variables de entorno" (2) que debemos hacer click en el.

Incluir a gperf en las variables de entorno

Una vez nos encontramos dentro vamos al apartado "Variables del Sistema", hacemos click en "Path" (3) y después en el botón "Editar..." (4). Para poder añadir na nueva variable de entorno pulsamos en el botón lateral derecho "Nuevo" y pegamos la ruta donde instalamos gperf C:\Program Files (x86)\GnuWin32\bin (6). Para finalizar pulsamos en "Aceptar para guardar los cambios.

Instalar CMAKE

CMake es un sistema de generación de scripts de compilación (build system) que utiliza ficheros de configuración independientes de plataforma y de compilador para generar nuestros proyecto.

Instalar CMAKE es muy sencillo solo tenéis que entrar en este enlace y descargar el instalador que se encuentra en la sección "Windows win64-x64 Installer".

Instalar CMAKE Windows 10

🚨 Importante: Cuando estamos instalando este programa debemos indicar que queremos que CMAKE se añada como variable de entorno (Path) marcando la segunda o tercera opción.

Descarga de TDLib y vcpkg para su compilación

Ahora una vez instaladas todas las dependencias necesarias procedemos descargarnos TDLib desde su repositorio de Github, para ello debemos tener GIT instalado en nuestro pc. En caso de no tener git instalado puedes descargarlo en este enlace.

Una vez tenemos todo listo procedemos a abrir una ventana de CMD o PowerShell. Dentro de esa ventana elegiremos una ruta donde queramos trabajar, en mi caso en el disco local "C:", para ello escribimos "cd C:" en la consola y pulsamos enter.

Ahora procedemos a clonar (descargarnos) el repositorio de TDLib en nuestro equipo usando el comando git clone + url y después entramos en la carpeta td que se nos crea al bajarnos el repositorio.

git clone https://github.com/tdlib/td.git
cd td

Una vez estamos en la carpeta "td" descargamos dentro vcpkg (herramienta que nos ayuda a manejar las librerías de C y C++) y entramos en la carpeta usando los siguiente comandos:

git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg

Ejecutamos el siguiente comando para iniciar vcpkg para compilar posteriormente unas librerías:

./bootstrap-vcpkg.bat

Usamos el siguiente comando para generar los siguientes dlls ("ssleay32.dll, libeay32.dll y zlib1.dll"):

./vcpkg.exe install openssl:x64-windows zlib:x64-windows
cd ..

Usamos este comando para eliminar completamente el directorio (realmente los archivos no se borran, pero le dice al compilador que ese directorio ya no esta en uso) anterior de compilación para después poder compilar TDLib usando el siguiente comando:

Remove-Item build -Force -Recurse -ErrorAction SilentlyContinue

Creamos una carpeta llamada "build" dentro de la carpeta "td" usando los siguientes comandos:

mkdir build
cd build

Una vez realiado el paso anterior solo nos queda hacer la compilación final para obtener el archivo "tdjson.dll" para ello tenemos que poner los siguientes dos comandos en la terminal:

cmake -A x64 -DCMAKE_INSTALL_PREFIX:PATH=../tdlib -DCMAKE_TOOLCHAIN_FILE:FILEPATH=../vcpkg/scripts/buildsystems/vcpkg.cmake ..

cmake --build . --target install --config Release

Lo único que nos falta ahora es localizar los archivos "tdjson.dll", "zlib1.dll", "libeay32.dll" y "ssleay32.dll", estos ficheros los podemos encontrar en la siguiente ruta: td\build\Release

El archivo "zlib1.dll" también lo puedes encontrar en esta ruta td\vcpkg\buildtrees\zlib\x64-windows-rel\. Los archivos "libeay32.dll" y "ssleay32.dll" también los puedes encontrar en esta ruta td\vcpkg\buildtrees\openssl-windows\x64-windows-rel\openssl-1.0.2q\out32dll.

Una vez tenemos esos archivos ya podemos empezar a trabajar con TDLib 🎉. Estos archivos los debéis poner en la carpeta raíz de vuestro proyecto.