- VS 2003.net에서 jpeglib 컴파일하는 방법
- 컴퓨터야그/자작
- 2009. 9. 6. 05:09
도저히 이해할 수 없는 Visual C++ 6.0의 성능에서 열변을 토한 이후 jpeglib를 VS.Net 2003에서 static library로 컴파일할 방법을 열심히 찾아봤다.
(간단한 거 만들 땐 역시 static library를 사용해서 파일 하나로 만들어야 제맛이다)
궁하면 통한다고 드디어 발견. Compiling the viewer libraries (MSVS 2003)라는 금쪽같은 포스트를 발견했다.
하지만, 현재 jpeglib의 최신버전은 7이고, 이 글에서 설명한 것은 6b라는 거.
별달리 크게 바뀐 건 없으니 그대로 따라하면 되더라.
.Net 2003에서 컴파일해서 libjpeg.lib 파일을 만드는 순서는 아래와 같다.
1. 다운받기
2. jpeglib.h 파일 수정
3. 파일명 변경
4. 대망의 컴파일
5. 자신의 프로그램에 연결
하지만, 이번에도 시궁창같은 현실에 직면함.
원래 굳이 잘 돌아가는 VS6 버리고 이걸 하려던 이유가 리샘플 성능 때문이었다.
똑같은 코드인데 VS.Net 2003에서 훨 빠른 거 보고 VS6을 버리고 싶어졌다.
하지만, 막상 다 모아서 돌려보니 VS.Net 2003쪽이 훨씬 느리다.
리샘플링은 더 빠를텐데, jpeg 파일 읽고 쓰는 부분이 훨 느린가보다. OTL
그런다고 내가 jpeglib를 최적화할 수도 없는 노릇이고.
덕분에 JPEG Shrinker 2.2는 세상에 나와보지도 못하고 어둠 속에 갇히는 신세가 되었다. 지못미.
결국 이 놈은 하루에 걸친 삽질에도 불구하고 아래와 같은 단점만 충실히 보유한 괴작이 되었다.
(간단한 거 만들 땐 역시 static library를 사용해서 파일 하나로 만들어야 제맛이다)
궁하면 통한다고 드디어 발견. Compiling the viewer libraries (MSVS 2003)라는 금쪽같은 포스트를 발견했다.
하지만, 현재 jpeglib의 최신버전은 7이고, 이 글에서 설명한 것은 6b라는 거.
별달리 크게 바뀐 건 없으니 그대로 따라하면 되더라.
.Net 2003에서 컴파일해서 libjpeg.lib 파일을 만드는 순서는 아래와 같다.
1. 다운받기
2. jpeglib.h 파일 수정
6b엔 몇 군데 고쳐야 되었던 것 같은데, 7에선 그닥 고칠 게 없다.
맨 앞부분에 아래와 같은 내용을 추가하면 끝.
맨 앞부분에 아래와 같은 내용을 추가하면 끝.
#ifdef WIN32
#include <winsock2.h>
#include <windows.h>
#endif
3. 파일명 변경
makefile.vc 를 Makefile로, jconfig.vc 를 jconfig.h 로 각각 바꿔준다.
4. 대망의 컴파일
Visual Studio .NET 2003 명령 프롬프트에서 작업 디렉토리로 이동하여 컴파일한다.
nmake -f Makefile 를 입력하면 알아서 libjpeg.lib를 만들어준다.
nmake -f Makefile 를 입력하면 알아서 libjpeg.lib를 만들어준다.
5. 자신의 프로그램에 연결
원본 폴더에서 jconfig.h, jerror.h, jmorecfg.h, jpeglib.h, jinclude.h 및 libjpeg.lib 작업 폴더로 복사한다.
그리고는 libjpeg.lib를 링크시키고, 아래와 같이 jpeglib.h를 포함시키면 끝.
그리고는 libjpeg.lib를 링크시키고, 아래와 같이 jpeglib.h를 포함시키면 끝.
#include "jpeglib.h"
하지만, 이번에도 시궁창같은 현실에 직면함.
원래 굳이 잘 돌아가는 VS6 버리고 이걸 하려던 이유가 리샘플 성능 때문이었다.
똑같은 코드인데 VS.Net 2003에서 훨 빠른 거 보고 VS6을 버리고 싶어졌다.
하지만, 막상 다 모아서 돌려보니 VS.Net 2003쪽이 훨씬 느리다.
리샘플링은 더 빠를텐데, jpeg 파일 읽고 쓰는 부분이 훨 느린가보다. OTL
그런다고 내가 jpeglib를 최적화할 수도 없는 노릇이고.
덕분에 JPEG Shrinker 2.2는 세상에 나와보지도 못하고 어둠 속에 갇히는 신세가 되었다. 지못미.
결국 이 놈은 하루에 걸친 삽질에도 불구하고 아래와 같은 단점만 충실히 보유한 괴작이 되었다.
1. 2.1보다 훨씬 큰 크기
UPX로 압축한 결과가 2.1 대비 160% 이상의 파일 사이즈.
사실 이건 MFC library를 static으로 컴파일 것이 주원인이다
(쬐만한 프로그램 하나 주면서 몇십MB짜리 런타임도 받으라고 할 수는 없잖아)
2. 2.1보다 훨씬 느린 속도
똑같은 코드인지라 100% 동일하게 동작하지만, 기대와는 달리 VS.Net 2003 쪽이 VS6보다 훨 느리다.
UPX로 압축한 결과가 2.1 대비 160% 이상의 파일 사이즈.
사실 이건 MFC library를 static으로 컴파일 것이 주원인이다
(쬐만한 프로그램 하나 주면서 몇십MB짜리 런타임도 받으라고 할 수는 없잖아)
2. 2.1보다 훨씬 느린 속도
똑같은 코드인지라 100% 동일하게 동작하지만, 기대와는 달리 VS.Net 2003 쪽이 VS6보다 훨 느리다.
앞에서와 달리 종합성능에선 VS.Net이 VS6에게 무참하게 짓밟힘. 읽고 쓰는데에만 시간이 2배로 걸리다니. OTL (단위:초)
'컴퓨터야그 > 자작' 카테고리의 다른 글
디카 메모리가 부족하다고 풍경을 마음에 담을 순 없다! (최종판 다음버전 OTL) (15) | 2009.09.11 |
---|---|
디카 메모리가 부족하다고 풍경을 마음에 담을 순 없다! (최종판) (7) | 2009.09.10 |
디카 메모리가 부족하다고 풍경을 마음에 담을 순 없다! (업그레이드) (3) | 2009.09.05 |
디카 메모리가 부족하다고 풍경을 마음에 담을 순 없다! (10) | 2009.09.03 |
4,000,000 이하의 피보나찌 수열 중 짝수의 합 구하기 (18) | 2009.06.15 |
Recent comment