OpenSSL può essere collegato direttamente all'interno dell'eseguibile dell'applicazione, anziché essere caricato a runtime dai file DLL libcrypto e libssl. Questo significa che un'applicazione che utilizza TLS non deve distribuire alcuna DLL di OpenSSL, tutto ciò che le serve è già contenuto nel file .exe.
Questo è utile quando si desidera distribuire un unico file, quando non è possibile garantire che la macchina di destinazione abbia installata la DLL OpenSSL corretta, oppure quando il proprio processo di distribuzione non consente file aggiuntivi accanto all'eseguibile.
Non c'è nulla da configurare. È sufficiente aggiungere l'unità sgcIdSSLOpenSSL_Static alla clausola uses del proprio progetto, ad esempio nel file .dpr principale:
uses
sgcIdSSLOpenSSL_Static;
Questo è tutto. Non c'è alcuna direttiva del compilatore da abilitare né alcuna versione dell'API OpenSSL da scegliere, l'applicazione inizia a utilizzare la libreria OpenSSL collegata nell'eseguibile a partire dalla successiva esecuzione, sia per i componenti client che per quelli server. Se rimuove l'unità dalla clausola uses, l'applicazione torna a caricare le DLL OpenSSL esattamente come prima.
La versione di OpenSSL attualmente collegata è la 3.5.7. Questa versione viene aggiornata periodicamente per includere le ultime correzioni di OpenSSL, quindi non deve preoccuparsi di tenere traccia delle versioni di OpenSSL né di distribuirle personalmente.
E2045 Bad object file format
Questo significa che si sta compilando con una versione di Delphi precedente a XE2. Il collegamento statico richiede Delphi XE2 o versioni successive, rimuova l'unità sgcIdSSLOpenSSL_Static dalla clausola uses e l'applicazione continuerà a funzionare con le DLL OpenSSL.