Skip to content

Fix Windows MSVC build: quazip path typo, missing system/zlib libs - #4331

Open
codemee wants to merge 1 commit into
fritzing:developfrom
codemee:fix/windows-msvc-build-deps
Open

Fix Windows MSVC build: quazip path typo, missing system/zlib libs#4331
codemee wants to merge 1 commit into
fritzing:developfrom
codemee:fix/windows-msvc-build-deps

Conversation

@codemee

@codemee codemee commented Aug 21, 2026

Copy link
Copy Markdown

Summary

While building Fritzing from source on Windows (Qt 6.10.3, MSVC 2022, x64), I ran into two build-breaking issues in the qmake pri/ files:

  • pri/quazipdetect.pri appends a stray intuisphere suffix onto QUAZIP_PATH, so qmake looks for a folder like quazip-6.10.3-1.4intuisphere instead of quazip-6.10.3-1.4, and always fails with "quazip could not be found at ...".
  • On win32, the link step fails with unresolved externals:
    • From git2.lib: WinHttpOpen, RegOpenKeyExW, CryptAcquireContextA, etc. — libgit2 (built as a static lib with the WinHTTP backend) needs winhttp, rpcrt4, crypt32, ole32, secur32, ws2_32, advapi32, none of which pri/libgit2detect.pri links on Windows.
    • From quazip1-qt6.lib: gzopen, gzread, gzwrite, etc. — QuaGzipFile needs zlib's gzip-file API, which isn't exported by Qt's bundled/private zlib. A real zlib build needs to be linked on win32 (I built zlib 1.3.1 from source and placed it as a sibling zlib-1.3.1 folder, matching this project's existing convention for libgit2-*/quazip-*/Clipper1-*).

With both fixes, qmake && jom produces a working Fritzing.exe on Windows 10/11 x64, and I've verified it launches correctly and loads the parts library.

Test plan

  • qmake phoenix.pro succeeds and finds quazip at the correct path
  • jom -f Makefile.Release compiles and links Fritzing.exe without unresolved externals
  • Launched the resulting Fritzing.exe, confirmed the Parts panel and Inspector load real parts from a freshly generated parts.db

Co-Authored-By: Claude Sonnet 5 noreply@anthropic.com

quazipdetect.pri appended a stray "intuisphere" suffix onto
QUAZIP_PATH, so qmake could never find a correctly-named quazip
folder on any platform.

On win32, libgit2 (built as a static lib against WinHTTP/CryptoAPI)
needs winhttp, rpcrt4, crypt32, ole32, secur32, ws2_32 and advapi32
to resolve symbols like WinHttpOpen, CryptAcquireContextA and
RegOpenKeyExW at link time, none of which qmake pulls in by default.

QuaZip's gzip file support (QuaGzipFile) also needs zlib's gz* API
(gzopen/gzread/gzwrite/...), which isn't exported by Qt's bundled/
private zlib, so the final Fritzing.exe link fails with unresolved
externals unless a real zlib library is linked in on win32.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@sonarqubecloud

Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant