Primeros pasos
El SDK viene ya compilado para Windows x64 y Linux x64. Se descomprime, se enlaza al proyecto y se ejecuta un primer programa.
01Requisitos
| Elemento | Mínimo | Notas |
|---|---|---|
| Compilador C++ | C++20 | Windows: MSVC 19.51 (Visual Studio 2026) o posterior, porque una biblioteca estática no se puede enlazar con un toolset más antiguo que el que la compiló. Linux: GCC 15 o posterior. |
| Runtime de MSVC | /MD | Las bibliotecas de Windows usan el runtime dinámico, /MD en Release y /MDd en Debug, el valor por defecto de CMake. El proyecto debe usar el mismo. |
| Plataforma | x64 | Windows x64, y Linux x64 con glibc 2.28 o posterior (compilado en Rocky Linux 8). macOS, ARM64, Clang y x86 de 32 bits aún no tienen SDK. |
| CMake | 3.21 | Para usar find_package. En Linux también funciona pkg-config. |
| Compilador C | C11 | Solo para llamar a la capa C desde C. Se prueba como C11 y C17. |
| Bibliotecas del sistema | Solo las del SO | Windows: ws2_32, advapi32, psapi, user32, winmm, wintrust, crypt32, iphlpapi, Synchronization, bcrypt. Linux: pthread, dl, m, rt. find_package y pkg-config las añaden automáticamente. |
02Obtener el SDK
El SDK es un archivo .zip por plataforma, ya compilado. No hay nada que compilar ni instalar: se descomprime y se apunta el proyecto hacia él. El mismo archivo ejecuta la evaluación y, con una clave de serie, la edición con licencia.
Evaluación
La edición Standard, con todos los módulos, durante 30 días desde el primer uso en cada máquina. Sin registro, sin clave de serie.
- Descargar el archivo del SDK.
- Descomprímelo y enlázalo al proyecto (paso 04).
- Llamar a
UnlockBundlecon un serial vacío (paso 05).
Con licencia
Tras la compra, el correo de confirmación trae todo lo necesario.
- El archivo del SDK correspondiente a la licencia.
- Una clave de serie temporal, válida durante 30 días.
- La clave de serie permanente, enviada automáticamente pasados esos 30 días.
03Qué incluye el SDK
Headers, la biblioteca estática en Release y Debug (la de Debug lleva el sufijo d), los archivos que hacen funcionar find_package y las herramientas de línea de comandos. Todos los módulos vienen compilados, incluidos los especializados (ver módulos incluidos).
ethereal-win-x64/ include/ethereal/ # C++ and C headers lib/Ethereal.lib # Release lib/Ethereald.lib # Debug lib/cmake/Ethereal/ # find_package( Ethereal ) bin/ # etl-bench, etl-i18n, etl-trees, etl-neural, etl-modelguard, etl-update
ethereal-linux-x64/ include/ethereal/ # C++ and C headers lib64/libEthereal.a # Release lib64/libEthereald.a # Debug lib64/cmake/Ethereal/ # find_package( Ethereal ) lib64/pkgconfig/ # ethereal.pc bin/ # etl-bench, etl-i18n, etl-trees, etl-neural, etl-modelguard, etl-update
La biblioteca también necesita algunas bibliotecas auxiliares pequeñas y definiciones de compilación. find_package y pkg-config las incorporan, así que conviene usar uno de los dos en lugar de listar los archivos a mano.
04Enlazar el proyecto
Apunta CMAKE_PREFIX_PATH a la carpeta descomprimida del SDK y pide los módulos que uses. Los componentes solo comprueban nombres: hay una única biblioteca, Ethereal::Ethereal, y CMake elige el archivo Release o Debug para cada configuración.
cmake_minimum_required( VERSION 3.21 ) project( app CXX ) find_package( Ethereal 0.1 REQUIRED COMPONENTS Regex I18n ) add_executable( app main.cpp ) target_link_libraries( app PRIVATE Ethereal::Ethereal )
# Windows cmake -S . -B build -A x64 -DCMAKE_PREFIX_PATH=C:\sdk\ethereal-win-x64 cmake --build build --config Release # Linux cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=/opt/ethereal-linux-x64 cmake --build build
# Linux. The ethereal.pc file is relocatable.
export PKG_CONFIG_PATH=/opt/ethereal-linux-x64/lib64/pkgconfig
g++ -std=c++20 main.cpp $(pkg-config --cflags --libs ethereal)
05Desbloquear y ejecutar
Llamar a Bundle::UnlockBundle una vez por aplicación, antes de usar cualquier módulo, con la clave de serie. Durante la evaluación, pasar una cadena vacía. Una clave rechazada devuelve un estado que indica el motivo: firma, formato, producto, validez o clave ausente. La verificación ocurre solo sin conexión, contra una clave pública compilada en la biblioteca. No se envía nada por la red.
#include <ethereal/cpp/pch/pch_ethereal.h> int main( int argc, char ** argv ) { using namespace Ethereal; // once per application, before anything else const char * pSerial = ( argc > 1 ) ? argv[ 1 ] : ""; const Bundle::EBundleUnlockStatus eStatus = Bundle::UnlockBundle( pSerial ); if( eStatus != Bundle::eOk ) { std::printf( "license refused, code %d\n", static_cast< int >( eStatus ) ); return 1; } std::string sDigest; Crypto::SHA256::GetAs_String( "ethereal", sDigest ); const UID::CUuid Id = UID::CUuid::Generate(); std::printf( "%s\n%s\n", sDigest.c_str(), Id.ToString().c_str() ); }
pch_ethereal.h incluye la biblioteca entera. Cada header público también compila por sí solo, así que se puede incluir únicamente lo que se usa, como <ethereal/cpp/regex/regex_inc.hpp>.
06Módulos incluidos
Todos los módulos ya vienen compilados en el SDK, incluidos los especializados de abajo. Es una biblioteca estática, así que el enlazador solo toma el código que llama tu programa: un módulo que no se usa nunca no llega al binario.
| Módulo | En el SDK | Qué añade |
|---|---|---|
| HTTP | incluido | Cliente HTTPS sobre el TLS 1.3 propio de la biblioteca |
| Telemetry | incluido | Métricas, trazas W3C, exportación a Prometheus, OTLP y StatsD |
| Machine learning | incluido | Los seis módulos de machine learning |
| Licensing | incluido | Kit de licencias Ed25519 para el producto propio |
| Updater | incluido | Canal de actualizaciones firmado |
| CrashReport | incluido | Informes de fallos y su envío |
| Guard | incluido | Primitivas antimanipulación, todas las piezas |
| Text | incluido | Unicode 18: normalización, segmentación, colación, bidi, IDNA |
| Testing · Bench | bibliotecas aparte | El framework de tests y el arnés de medición |