Visual C++ 6.0에서 Zlib 사용하기


Zlib 소스 코드를 다운로드 받을 수 있는 웹 사이트.

http://www.gzip.org/zlib


Win32용 Static Library 만들기

  1. 다운로드 받은 파일의 압축을 해제한다.

    다운로드 받은 파일의 압축을 해제한다.

  2. Visual C++ 6.0에서 File->New->Project->Win32 static library

    Visual Studio 6.0 을 실행시킨다.

  3. 이 때 MFC Support를 선택한다.

    MFC Support 를 선택한다.

  4. Source Files에 example.c와 minigzip.c 를 제외한 *.c 파일을 추가한다.

    프로젝트에 소스 파일들을 추가한다.

    example.c와 minigzip.c 를 제외한 *.c 파일을 추가한다.

  5. Source File List

    adler32.c compress.c crc32.c deflate.c gzio.c infblock.c infcodes.c inffast.c inflate.c inftrees.c infutil.c maketree.c tree.c uncompr.c zutil.c

  6. Header Files에 모든 *.h 파일을 추가한다.

    모든 헤더 파일을 추가한다.

  7. Header File List

    deflate.h infblock.h infcodes.h inffast.h inffixed.h inftrees.h infutil.h trees.h zconf.h zlib.h zutil.h

  8. F7을 누르면 library가 build된다.

    프로젝트를 빌드한다.

  9. debug 또는 release 폴더에 zlib.lib이 생성되어 있다.

    빌드된 zlib.lib 파일을 확인한다.


사용방법

  1. Source Files에 2번에서 만든 library 파일 추가한다.
  2. Header Files에 zconf.h와 zlib.h 파일 추가한다.
  3. Library를 사용할 Source file에 #include“zlib.h” 를 추가한다.

Zlib에 포함된 Functions에 대한 Manual

  1. Visual C++ 6.0용 예제 소스 코드
  2. http://www.gzip.org/zlib/manual.html 또는 http://www.gzip.org/zlib 에서 다운로드 받은 소스코드에 포함되어 있다.

문제와 해결 방안

라이브러리 링크 시에 다음과 같은 메시지가 나올 수 있다

MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _calloc already defined in LIBCD.lib(dbgheap.obj)
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _free already defined in LIBCD.lib(dbgheap.obj)
LINK : warning LNK4098: defaultlib "MSVCRTD" conflicts with use of other libs; use /NODEFAULTLIB:library
Debug/Test.exe : fatal error LNK1169: one or more multiply defined symbols found

Project->Setting->C/C++->Category->Code Generation->Mutithreaded DLL을 선택하면 된다.


그 밖의 참고 자료