Visual C++ 6.0에서 Zlib 사용하기
Zlib 소스 코드를 다운로드 받을 수 있는 웹 사이트.
Win32용 Static Library 만들기
다운로드 받은 파일의 압축을 해제한다.
Visual C++ 6.0에서 File->New->Project->Win32 static library
이 때 MFC Support를 선택한다.
Source Files에 example.c와 minigzip.c 를 제외한 *.c 파일을 추가한다.
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
Header Files에 모든 *.h 파일을 추가한다.
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
F7을 누르면 library가 build된다.
debug 또는 release 폴더에 zlib.lib이 생성되어 있다.
사용방법
- Source Files에 2번에서 만든 library 파일 추가한다.
- Header Files에 zconf.h와 zlib.h 파일 추가한다.
- Library를 사용할 Source file에
#include“zlib.h”
를 추가한다.
Zlib에 포함된 Functions에 대한 Manual
- Visual C++ 6.0용 예제 소스 코드
- 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을 선택하면 된다.