Skip to content

packMP3 v2.0a (library build fix)

Latest

Choose a tag to compare

@YadeWira YadeWira released this 12 Jul 19:06

Patch release on top of v2.0 — fixes a real library-build bug, no changes
to the CLI binaries' behavior or the .pm3 format (same appversion 20,
fully compatible with v2.0 archives).

Fixes

  • Library build was broken in v2.0. packmp3.cpp used
    std::atomic/std::thread for the -k/-th intra-file chunking
    feature, but <atomic>/<thread> were only conditionally included
    (CLI-only guard) — make lib/make so/make dll, or any manual
    -DBUILD_LIB build, failed to compile entirely. Reported independently
    by a downstream consumer (ytool) building from the v2.0 tag; reproduced
    and confirmed before fixing.
  • Library headers were missing extern "C". packmp3lib.h/
    packmp3dll.h declared pmplib_* without C linkage, so the "C-linkage
    API" actually had C++ name mangling — a plain C consumer, a .def file,
    or GetProcAddress-by-name needed the compiler-mangled name. Fixed;
    exported symbols are now clean (pmplib_convert_file2file, etc.).
  • Added a 32-bit Windows DLL target (make dll-x86) — packMP3 only
    shipped a 64-bit DLL before.
  • Cleaned up leftover "PMP" wording in CLI help/error text that should
    have said .pm3 (a few strings were missed in the v1.0→v2.0 rename).

Verified before publishing

  • Reproduced the v2.0 library-build bug from scratch against the tagged
    commit, then verified v2.0a builds clean with the exact reported
    recipe (g++ -O3 -std=c++17 -DBUILD_LIB -fPIC -shared ...).
  • Full corpus lossless round-trip (11 files × -k1/2/4, 33/33
    bit-exact) with the actual release binary before upload.
  • Static lib, shared lib, and both Windows DLLs (32/64-bit) built and
    exercised with a real C++ consumer — lossless round-trip confirmed;
    both DLLs additionally verified on live Windows 7 SP1 x86 / Windows 10
    x64 VMs.

Downloads

Same layout as v2.0: packMP3_linux_x64, packMP3_win_x64.exe,
packMP3_win_x86.exe (CLI), plus packMP3-2.0a-linux-x64-lib.tar.gz /
packMP3-2.0a-win64-lib.zip / packMP3-2.0a-win32-lib.zip (library
bundles: lib + headers + .def + README per platform).

sha256sum -c SHA256SUMS.txt

See v2.0 for the
full feature changelog (MPEG-1/2/2.5 support, .pm3 format, -k
chunking, etc.) — this release only fixes the library build.