Figured it out by myself.
The library is compiled with __stdcall
calling convention, but does not declare exported functions as such. Visual Studio 2010 by default compiles a project with /Gd
flag, that switches to __cdecl
calling convention. Besides other, these calling conventions are also using different name mangling schemes for C functions.
You can read details on MSDN.
For Info-ZIP library in particular, the issue is fixed by adding the following defines before including the unzip.h
header:
#define EXPENTRY __stdcall
#define USE_UNZIP_LIB