Começar
O SDK já vem compilado para Windows x64 e Linux x64. Descompacte, faça o link com o seu projeto e rode um primeiro programa.
01Requisitos
| Item | Mínimo | Observações |
|---|---|---|
| Compilador C++ | C++20 | Windows: MSVC 19.51 (Visual Studio 2026) ou mais novo, porque uma biblioteca estática não pode ser linkada por um toolset mais antigo que o que a compilou. Linux: GCC 15 ou mais novo. |
| Runtime do MSVC | /MD | As bibliotecas para Windows usam o runtime dinâmico, /MD em Release e /MDd em Debug, o padrão do CMake. O seu projeto precisa usar o mesmo. |
| Plataforma | x64 | Windows x64, e Linux x64 com glibc 2.28 ou mais nova (compilado no Rocky Linux 8). macOS, ARM64, Clang e x86 de 32 bits ainda não têm SDK. |
| CMake | 3.21 | Para usar o find_package. No Linux, o pkg-config também funciona. |
| Compilador C | C11 | Só para chamar a camada C a partir de C. Ela é testada em C11 e C17. |
| Bibliotecas do sistema | Só as do SO | Windows: ws2_32, advapi32, psapi, user32, winmm, wintrust, crypt32, iphlpapi, Synchronization, bcrypt. Linux: pthread, dl, m, rt. O find_package e o pkg-config adicionam essas bibliotecas para você. |
02Obtenha o SDK
O SDK é um arquivo .zip por plataforma, já compilado. Não há nada para compilar nem instalar: você descompacta e aponta o seu projeto para ele. O mesmo arquivo roda a avaliação e, depois que você tiver uma chave serial, a edição licenciada.
Avaliação
A edição Standard, com todos os módulos, por 30 dias a partir do primeiro uso em cada máquina. Sem cadastro, sem chave serial.
- Baixe o arquivo do SDK.
- Descompacte e faça o link com o seu projeto (passo 04).
- Chame
UnlockBundlecom uma chave serial vazia (passo 05).
Licenciada
Depois da compra, o e-mail de confirmação traz tudo.
- O arquivo do SDK para a sua licença.
- Uma chave serial temporária, válida por 30 dias.
- A chave serial permanente, enviada automaticamente ao fim desses 30 dias.
03O que vem no SDK
Os headers, a biblioteca estática em Release e Debug (a de Debug tem o sufixo d), os arquivos que fazem o find_package funcionar e as ferramentas de linha de comando. Todos os módulos já vêm compilados, inclusive os especializados (veja módulos incluídos).
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
A biblioteca também precisa de algumas bibliotecas auxiliares pequenas e de definições de compilação. O find_package e o pkg-config trazem tudo isso, então use um dos dois em vez de listar os arquivos à mão.
04Integre ao seu projeto
Aponte o CMAKE_PREFIX_PATH para a pasta descompactada do SDK e peça os módulos que você usa. Os componentes só conferem os nomes: existe uma única biblioteca, Ethereal::Ethereal, e o CMake escolhe o arquivo Release ou Debug para cada configuração.
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)
05Desbloqueie e rode
Chame Bundle::UnlockBundle uma vez por aplicação, antes de usar qualquer módulo, passando a sua chave serial. Durante a avaliação, passe uma string vazia. Se a chave for recusada, o status de retorno diz o motivo: assinatura, formato, produto, validade ou chave ausente. A verificação é feita só offline, com uma chave pública compilada na biblioteca. Nada é enviado pela rede.
#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 traz a biblioteca inteira. Cada header público também compila sozinho, então você pode incluir só o que usa, por exemplo <ethereal/cpp/regex/regex_inc.hpp>.
06Módulos incluídos
Todos os módulos já vêm compilados no SDK, inclusive os especializados abaixo. É uma biblioteca estática, então o linker só pega o código que o seu programa chama: um módulo que você nunca usa não chega ao seu binário.
| Módulo | No SDK | O que adiciona |
|---|---|---|
| HTTP | incluído | Cliente HTTPS sobre o TLS 1.3 da própria biblioteca |
| Telemetry | incluído | Métricas, traces W3C e exportação para Prometheus, OTLP e StatsD |
| Machine learning | incluído | Os seis módulos de machine learning |
| Licensing | incluído | Kit de licenças Ed25519 para o seu próprio produto |
| Updater | incluído | Canal de atualização assinado |
| CrashReport | incluído | Relatórios de falha e o seu envio |
| Guard | incluído | Primitivas anti-tamper, completas |
| Text | incluído | Unicode 18: normalização, segmentação, ordenação, bidi, IDNA |
| Testing · Bench | bibliotecas à parte | O framework de testes e o harness de medição |