[flac-dev] MSVC, win_utf8_io, static and dynamic libs

lvqcl lvqcl.mail at gmail.com
Sat Jan 16 05:32:28 PST 2016

Currently MSVS can build dynamic libraries (libFLAC_dynamic.dll,
libFLAC++_dynamic.dll), static libraries (libFLAC_static.lib,
libFLAC++_static.lib) and executables (flac.exe, metaflac.exe, etc).

All executables are statically linked to libFLAC. It's possible to
create a flac.exe that is linked to thr libFLAC DLL file, but it
requires manual editing of various projects in the FLAC solution.
is this configuration supported?

I ask because such configuration breaks support of non-ASCII
filenames. Both flac.exe and libFLAC_dynamic.dll were staically
linked to different copies of win_utf8_io_static.lib, then flac.exe
sets its copy of win_utf8_io_codepage variable to CP_UTF8, and the copy
of this variable inside libFLAC_dynamic.dll is always equal to CP_ACP.
As a result flac sends UTF8-encoded strings to libFLAC, and libFLAC
treats them as ANSI-encoded.

More information about the flac-dev mailing list