Windows Libraries

This article documents how to update library dependencies for Windows.

Packaging notes

C++ libraries (such as Qt) are highly dependent on the MSVC runtime (MSVCRT) version and require separate packages for each MSVC compiler version.

Many libraries (including GnuTLS, Gcrypt, libssh) are cross-compiled with MinGW on Linux. Where possible, try to reuse packages from other trusted projects such as OpenSUSE or Debian.

At minimum a library package should contain header files, runtime libraries (.dll) and import libraries (.lib).

Do not use the MinGW .dll.a file, these are not compatible with MSVC. One .dll.a appears to work, but multiple .dll.a libraries results in a cryptic runtime error. Instead create a new import library with either:

Checklist:

Procedure for updating libraries

First time: make a local copy of the repositories:

svn checkout svn+ssh://svn.wireshark.org/svn/wireshark-win32-libs/trunk wireshark-win32-libs-trunk
svn checkout svn+ssh://svn.wireshark.org/svn/wireshark-win64-libs/trunk wireshark-win64-libs-trunk

Add a single package (repeat this for both repos as needed):

  1. Update existing copies: svn up

  2. Update README.txt in the top-level directory.
  3. svn add packages/<package>-<version>.zip

  4. svn commit -m "Update <package> to <version>"

Once you are ready to publish a tagged version of all packages. Tag name convention: yyyy-mm-dd. Example:

# Repeat this for both the 32-bit and 64-bit repo as needed.
svn copy -m "Create a tag for <package> <version>" ^/trunk ^/tags/2018-08-03

Historical note: In the past, a separate trunk-A.B existed for master-A.B and tags were named like yyyy-mm-dd-A.B. Now that they are combined, it is possible to reuse the same date tag across branches.

Finally update tools/win-setup.ps1 in the appropriate git branches.

Other commands

Development/WindowsLibs (last edited 2018-12-31 12:13:06 by PeterWu)