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

Zuletzt geändert: il 29/01/2026 alle 21:32