====== Risoluzione Problemi ====== Qui troverete soluzioni per i problemi comuni durante la compilazione di OpenSSL. ---- ===== Errori di Compilazione ===== ==== "stdlib.h not found" o "windows.h not found" ==== **Sintomo:** fatal error C1083: Cannot open include file: 'stdlib.h': No such file or directory **Causa:** Windows SDK non installato o non nel PATH. **Soluzione:** # Opzione 1: Installare Windows SDK winget install Microsoft.WindowsSDK.10.0.22621 # Opzione 2: Nel Visual Studio Installer # → "Individual Components" → selezionare "Windows 10 SDK" Poi: Ricaricare l'ambiente Visual Studio: call "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat" ---- ==== "perl is not recognized" ==== **Sintomo:** 'perl' is not recognized as an internal or external command **Causa:** Perl non installato o non nel PATH. **Soluzione:** # Installare Perl winget install StrawberryPerl.StrawberryPerl # Impostare PATH manualmente (se ancora non trovato dopo il riavvio) set PATH=C:\Strawberry\perl\bin;%PATH% ---- ==== "NASM not found" ==== **Sintomo:** NASM not found - please read INSTALL.md **Causa:** NASM non installato o non nel PATH. **Soluzione A: Installare NASM (consigliato)** winget install NASM.NASM # Impostare PATH (il percorso può variare!) set PATH=%LOCALAPPDATA%\bin\NASM;%PATH% # Verificare nasm -v **Soluzione B: Compilare senza NASM (più lento)** perl Configure VC-WIN64A no-asm --prefix=D:\Projects\openssl-3.6.0\bin Senza NASM, AES e SHA sono significativamente più lenti! ---- ==== "cl.exe not found" ==== **Sintomo:** 'cl' is not recognized as an internal or external command **Causa:** Ambiente Visual Studio non caricato. **Soluzione:** call "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat" **Suggerimento:** Avviate sempre "Developer Command Prompt for VS 2022" dal menu Start - l'ambiente è già caricato. ---- ===== Problemi PowerShell ===== ==== "cl.exe causa errore nonostante il successo" ==== **Sintomo:** Lo script PowerShell si interrompe anche se ''cl.exe'' funziona. **Causa:** ''cl.exe'' scrive informazioni sulla versione su stderr, che viene interpretato come errore con ''$ErrorActionPreference = "Stop"''. **Soluzione nello script:** # Gestire correttamente l'output di cl.exe try { $clOutput = & cl 2>&1 | Out-String Write-Host "cl.exe trovato" } catch { Write-Host "cl.exe trovato (stderr ignorato)" } ---- ===== Problemi di Runtime ===== ==== "DLL not found" all'avvio del programma ==== **Sintomo:** The program can't start because libcrypto-3-x64.dll is missing **Soluzione:** 1. Copiare le DLL nella cartella dell'applicazione: copy D:\Projects\openssl-3.6.0\bin\bin\libcrypto-3-x64.dll .\ copy D:\Projects\openssl-3.6.0\bin\bin\libssl-3-x64.dll .\ 2. Oppure copiare automaticamente nel .csproj: PreserveNewest PreserveNewest ---- ==== "ML-DSA/ML-KEM non disponibile" ==== **Sintomo:** openssl list -signature-algorithms | findstr mldsa # Nessun output **Possibili cause:** 1. **Versione OpenSSL errata** - Richiede 3.6.0 o superiore openssl version # Deve essere: OpenSSL 3.6.0 o superiore 2. **Provider non caricato** openssl list -providers # Dovrebbe mostrare "default" ed eventualmente "oqsprovider" ---- ===== Ulteriore Aiuto ===== Se il vostro problema non è elencato qui: * [[https://github.com/openssl/openssl/blob/master/NOTES-WINDOWS.md|OpenSSL Windows Notes]] * [[https://github.com/openssl/openssl/issues|OpenSSL GitHub Issues]] * [[https://stackoverflow.com/questions/tagged/openssl|StackOverflow OpenSSL]] ---- //Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional//