Inhaltsverzeichnis
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:
<ItemGroup> <None Update="libcrypto-3-x64.dll"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> <None Update="libssl-3-x64.dll"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> </ItemGroup>
"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:
Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional