To compile zziplib with MSVC++ 6 you can use the workspace and project
files shipped along with the zziplib tarball in the msvc6/ directory.
This will save you most of the following steps, atleast skip step 1.

Step 1: create zziplib workspace file

- Create a workspace and a project file for "zzip". 
- Add all .c and .h files in the zzip/ directory. Yes, all.
- Add the toplevel directory (containing the zzip/ directory) as an
  "Additional Include Directory" to the search path. Best do this in
  -> Project -> Settings -> Tab: C/C++ 
             -> Category: Preprocessor -> "Additional Include Directories".
  This is a comma-separated list, in the workspace files shipped along
  with the zziplib tarball, you will see ".." in there where ".." (or ..\..)
  is the path to the toplevel directory of the unpacked sources.
- if you did choose "DLL" as a project type then you will automatically
  see a define _USRDLL and ZZIP_EXPORTS in (this is just a hint)...
  -> Project -> Settings -> Tab: C/C++ 
             -> Category: Preprocessor -> "Preprocessor Definitions".
- remove any LIB imports other than "kernel32.lib"
  -> Project -> Settings -> Tab: Link
             -> Category: Input -> "Object/Library Modules"

Step 2: add zlib dependencies of zziplib.dll

- if you do not have installed zlib in the system then you may want to
  download "lib" + "bin" parts from http://gnuwin32.sf.net/packages/zlib.htm
  (I found this msvcrt package via a reference at http://www.zlib.org)
- suppose you have the zlib.h file in "D:\include" and the libz.lib file
  is in "D:\lib" then we need to add those dependencies to the project.
- add the path to zlib.h as an "Additional Include Path", best do this in
  -> Project -> Settings -> Tab: C/C++ 
             -> Category: Preprocessor -> "Additional Include Directories".
  This is a comma-separated list, after you have changed it, it might
  look like "..,.,D:\include" (for ".." part see description in Step 1)
- That is enough to build a zziplib.lib, in order to create a zziplib.dll
  we need to resolve its linker dependencies as well, best do this in
  -> Project -> Settings -> Tab: Link
             -> Category: Input -> "Object/Library Modules"
  This is a space separated list (!!), add "libz.lib" there, so after
  changing it it might look like "kernel32.lib libz.lib". Also modify
  -> Project -> Settings -> Tab: Link
             -> Category: Input -> "Additional Library Path"
  which is usually empty. After changing it, it might contain "D:\lib".
- Also add ZZIP_DLL or ZZIP_EXPORTS for dllspec(exports), best do this in
  -> Project -> Settings -> Tab: C/C++
             -> Category: Preprocessor" -> "Preprocessor Definitions".
  After changing it, it might look like
  "NDEBUG,WIN32,_WINDOWS,_MBCS,_USRDLL,ZZIP_EXPORTS"

Step 3: example binaries to link with zziplib.dll 

- dynamic linking is best to avoid any copyright problems, the "Lesser GPL"
  does not restrict usage of zziplib for the case of a separated zzip.dll
- the example workspace builds two zziplib libraries, where zziplib.lib
  points to the staticlink variant and zzip.lib to the dynalink variant
  which will add a dependency on zzip-1.dll being in the PATH
- the example binaries shipped with zziplib tarball do only have a single
  .c file per output .exe, we pick zzcat.exe to guide you through.
- if you do not use our shipped project files, create a project "zzcat" 
  and add "bins/zzcat.c" in there.
- adjust the "Additional Include Directories":
  -> Project -> Settings -> Tab: C/C++ 
             -> Category: Preprocessor -> "Additional Include Directories".
  like in Step 1 add the path to "./zzip" owning the zziplib headers.
  We do _not_ need the zlib headers to compile "zzcat.exe", so it might
  just look like ".." (or "..\.." or "..\zziplib-0.10.82")
- adjust the "Object/Library Modules"
  -> Project -> Settings -> Tab: Link
             -> Category: Input -> "Object/Library Modules"
  adding "zzip.lib libz.lib" with a space. The result might look like
  "kernel32.lib zzip.lib libz.lib" or "kernel32.lib zziplib.lib libz.lib".
- adjust the "Additional Library Path"
  -> Project -> Settings -> Tab: Link
             -> Category: Input -> "Additional Library Path"
  and add both zziplib libpath and libz libpath, separated by comma, i.e.
  ".\Release,D:\lib" or ".\Debug,D:\lib"

Step 4: Customization
- have a look at the info parts that can be put into the DLL project:
  -> Project -> Settings -> Tab: Link
             -> Category: Output -> "Version Information"
     e.g. Major: "10" Minor: "82" for Release 0.10.82 of zziplib
  -> Project -> Settings -> Tab: Resources -> "Language"
     or just ignore the value when no messages are there
  -> Project -> Settings -> Tab: Link
             -> Category: General -> "Output Filename"
     e.g. "zzip-1.dll" intead of "zzip.dll" for this first generation
     (needs also to rename dll dependencies from "zzip.lib" to "zzip-1.lib")
- there are a few defines that trigger extra code in zziplib, e.g.
   ZZIP_HARDEN - extra sanity check for obfuscated zip files
   ZZIP_CHECK_BACKSLASH_DIRSEPARATOR - to check for win32-like paths
   (for the magic part within a zip archive we always assume a "/" separator)
   ZZIP_USE_ZIPLIKES - not only do magic checks for ".zip" files to
   be handled like directories, also do that for a few other zip documents
   ZZIP_WRAPWRAP - if there problems on unusual targets then try this one.
  -> Project -> Settings -> Tab: C/C++
             -> Category: Preprocessor" -> "Preprocessor Definitions".

Step 5: Testing
- copy the *.dll and *.exe files from msvc6/Release/ to a place reachable
  from your PATH (perhaps d:\bin), or even simpler, go the other way round, 
  copy the file test/test.zip to the msvc6/Release/ directory.
- open a command window (usually with a "MSDOS" symbol) and go the 
  directory containing the test.zip (e.g. cd zziplib-0.10.82/msvc6/Release)
- run `zzcat test/README` which should extract the file README from the
  test.zip archive and print it to the screen. Try `zzdir test` to see
  that it was really a compressed file printed to the screen.
- If it works then everything is alright round zziplib which is a good 
  thing to know when there are other problems
- at the time of writing (0.10.82 of zziplib), the set of bin files are
  precompiled with msvc6 and pushed to the download center at sourceforge.

cheers, -- guido

# finally, the older description for zziplib 0.10.5x 

To build zziplib you need to add the path to zlib to the include directories
search path. You find this under

    Project, Settings, C/C++, Preprocessor, Additional Include Directories.

Example:
You have installed zlib to D:\zlib. You then change the edit box
    Additional Include Directories
from
    ..
to
    ..,D:\zlib


Included are two project files for zziplib. One that creates
zziplib as a DLL, and one that creates zziplib as a static library.
The DLL version is compiled with multi-threaded support. The static library
version is currently set to link with libc(d).lib, i.e. only single-threaded
CRT. If this does not suit your needs, you can change this under
    Project, Settings, C/C++, Code Generation, Use run-time library.
