====== Rješavanje Problema ======
Ovdje ćete pronaći rješenja za česte probleme prilikom kompilacije OpenSSL-a.
----
===== Greške pri Kompilaciji =====
==== "stdlib.h not found" ili "windows.h not found" ====
**Simptom:**
fatal error C1083: Cannot open include file: 'stdlib.h': No such file or directory
**Uzrok:** Windows SDK nije instaliran ili nije u PATH-u.
**Rješenje:**
# Opcija 1: Instalirajte Windows SDK
winget install Microsoft.WindowsSDK.10.0.22621
# Opcija 2: U Visual Studio Installeru
# → "Individual Components" → odaberite "Windows 10 SDK"
Zatim: Ponovno učitajte Visual Studio okruženje:
call "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat"
----
==== "perl is not recognized" ====
**Simptom:**
'perl' is not recognized as an internal or external command
**Uzrok:** Perl nije instaliran ili nije u PATH-u.
**Rješenje:**
# Instalirajte Perl
winget install StrawberryPerl.StrawberryPerl
# Ručno postavite PATH (ako još uvijek nije pronađen nakon ponovnog pokretanja)
set PATH=C:\Strawberry\perl\bin;%PATH%
----
==== "NASM not found" ====
**Simptom:**
NASM not found - please read INSTALL.md
**Uzrok:** NASM nije instaliran ili nije u PATH-u.
**Rješenje A: Instalirajte NASM (preporučeno)**
winget install NASM.NASM
# Postavite PATH (putanja može varirati!)
set PATH=%LOCALAPPDATA%\bin\NASM;%PATH%
# Provjerite
nasm -v
**Rješenje B: Kompilirajte bez NASM-a (sporije)**
perl Configure VC-WIN64A no-asm --prefix=D:\Projects\openssl-3.6.0\bin
Bez NASM-a, AES i SHA su značajno sporiji!
----
==== "cl.exe not found" ====
**Simptom:**
'cl' is not recognized as an internal or external command
**Uzrok:** Visual Studio okruženje nije učitano.
**Rješenje:**
call "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat"
**Savjet:** Uvijek pokrenite "Developer Command Prompt for VS 2022" iz Start izbornika - okruženje je već učitano.
----
===== PowerShell Problemi =====
==== "cl.exe uzrokuje grešku unatoč uspjehu" ====
**Simptom:** PowerShell skripta se prekida iako ''cl.exe'' radi.
**Uzrok:** ''cl.exe'' piše informacije o verziji na stderr, što se interpretira kao greška s ''$ErrorActionPreference = "Stop"''.
**Rješenje u skripti:**
# Ispravno rukujte cl.exe izlazom
try {
$clOutput = & cl 2>&1 | Out-String
Write-Host "cl.exe pronađen"
} catch {
Write-Host "cl.exe pronađen (stderr ignoriran)"
}
----
===== Problemi u Izvršavanju =====
==== "DLL not found" pri pokretanju programa ====
**Simptom:**
The program can't start because libcrypto-3-x64.dll is missing
**Rješenje:**
1. Kopirajte DLL datoteke u mapu aplikacije:
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. Ili automatski kopirajte u .csproj:
PreserveNewest
PreserveNewest
----
==== "ML-DSA/ML-KEM nije dostupan" ====
**Simptom:**
openssl list -signature-algorithms | findstr mldsa
# Nema izlaza
**Mogući uzroci:**
1. **Pogrešna verzija OpenSSL-a** - Potrebna je 3.6.0 ili novija
openssl version
# Mora biti: OpenSSL 3.6.0 ili noviji
2. **Provider nije učitan**
openssl list -providers
# Trebao bi pokazati "default" i eventualno "oqsprovider"
----
===== Daljnja Pomoć =====
Ako vaš problem nije ovdje naveden:
* [[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//