I made a version of libid3tag that builds a Windows DLL instead of a static library, using reasonably modern tools. My package includes Visual Studio 2008 project files suitable for building both 32-bit and 64-bit targets. The DLL exports only a subset of the library's functions, but this is easily changed by editing libid3tag.def.
The C source files are identical to the original 0.15.1b distribution, except for a single one-line change to id3tag.h: an id3_free function was added. DLLs should free any memory they allocate, and if these allocations are directly exposed to the user, the DLL should provide a method for freeing them, so that the freeing can be done by the DLL's heap manager, which may differ from the application's. In a DLL version of libid3tag, strings allocated by functions such as id3_ucs4_latin1duplicate MUST be freed via id3_free instead of free, otherwise the heap will likely be corrupted, potentially crashing the application.
The source package is available here: http://sourceforge.net/projects/waveshop/files/tools/libid3tag/
Best regards,
Chris Korda http://waveshop.sourceforge.net/