티스토리 뷰
gz 압축프로그래밍1
gz 압축프로그래밍2
gz 압축프로그래밍3
gz 압축프로그래밍(64비트)4
유투브 강의 참조 : https://www.youtube.com/watch?v=L1FU5Ny8dNg
zlib 이용해서 MFC로 압축 프로그래밍
1. http://www.zlib.net/ 에서 아래 그림과 같이 zipfile format용으로 US에서 최신 버전의 소스코드를 다운로드 한다.
2. 다운로드 받은 파일을 압축으로 풀면 아래와 같이 소스 코드가 있다.
3. VisualStudio2017 Community 를 실행해서
4. 아래 그림처럼 노란색 부분처럼 지정한다.
5. 아래 그림처럼 솔루션 탐색기에서 리소스파일, 소스파일, 헤더파일 포더를 삭제한다.
6. 2번에서 압축 푼 파일에서 소스 파일을 프로젝트 소스 코드가 있는 폴더에 복사한다.
7. 복사한 소스 코드를 아래 그림처럼 프로젝트에 추가한다.
8. 아래 처럼 소스 코드 추가된다.
9. 추가한 C 소스 코드를 아래 그림과 같이 컴파일 하면 에러는 없지만, 파란색 네모칸 처럼 C4996 경고가 나오면 경과 나오는 소크 코드에 8행 처럼 #pragma warning(disable : 4996) 를 추가해서 경고가 나오지 않는다. (각 파일마다 설정하지 않고 프로젝트에서 설정하는 방법이 있으나 프로젝트 파일을 첨부하지 못해 파일 단위로 처리한다)
9-1. 위 처럼 각 파일에 코드를 넣기 불편하면, 아래 그림처럼 경고 코드 번호를 추가하면 한번에 처리된다.
10. 프로젝트 메뉴에서 빌드하면 dll 파일이 만들어진다.
11. 마이크로소프 MSDN 사이트에서 depends 로 검색하면 아래 링크의 주소를 찾을 수 있으며 32비트, 64비트용 depends 파일을 다운로드 한다.
depends22_x86.zip
depends22_x64.zip
http://www.dependencywalker.com/
12. Depends 실행해서 10번에서 만든 Zip.DLL 파일을 열면 아래 그림 녹색 부분처럼 외부에 공개할 함수 목록이 나오지 않는다.
13. 아래 그림처럼, compress.c 소스코드에서 22행의 compress2() 가 외부에 노출되는 함수이므로, 'ZEXPORT' 에 마우스 포인터를 두고 마우스 우측버튼 눌러 나온 메뉴에서 '정의로이동' 메뉴를 선택한다.
14. zconf.h 파일의 380행의 ZEXPORT 가 정의된것을 찾고, 코드 위를 보면 'ZLIB_DLL' 과 'ZLIB_INTERNAL' 이 정의되어야만 338행의 'extern __declspec(dllexport)' 이 실행되어야만 한다.
15. 아래 그림처럼 솔루션 탐색ㄱ기의 Zip 속성에서 C/C++ -> 전처리기 -> 전처리기 정의 에서 편집을 클릭하고 'ZLIB_DLL' 을 추가한다. (이렇게만 해도 되는거 같은데 안되면 'ZLIB_INTERNAL' 추가)
16. 다시 빌드하고 만들어진 Zip.DLL 을 Depends 에서 열어보면 아래 그림처럼 외부에 공개되는 함수들이 보인다.
17. 배포용으로 Release 모드로 다시 빌드한다.
참고로, 아래 그림처럼 Zip 속성에서 구성은 'debug' 대상이름에 '_d' 를 붙이고 Debug 모드에서 프로젝트 빌드한다
아래 그림처럼 Zip_d.dll 파일이 만들어진다.