VC6에 포함된 STL은 딩컴웨어의 라이브러리를 사용하고 있으며 C++표준이 된 해에 발표된 툴이라 그런지 STL관련 문제가 너무 많다.
STLPort의 입출력라이브러리를 사용할때 VC 프로젝트에서 CRT라이브러리를 DLL로 사용하면 STLPort관련 DLL도 같이 배포 해야된다. 좀 불편한 사항이라 Static라이브러리를 기본으로 사용하게 컴파일하는 방법을 같이 설명한다. (필자는 5.1.5를 사용중인데 그전 4.6.2를 사용할때 Static라이브러리로 컴파일이 잘 안되서 5.1.5로 바꿨다. Static라이브러리에 대한 설명은 5.1.5에서만 설명하겠다.)
STLPort 5.1.5, 5.2.0 설치
정적라이브러리(Static)로 사용방법은 아래 주석으로 표시한 두줄의 차이 밖에 없으며 configure에서 --rtl-dynamic 의미는 동적(dynamic) C,C++ 라이브러리 사용시 STLport를 정적으로(statically) 링크할 수 있도록 한다는 것이다. 위와 같이 설정하면 실제 컴파일된 결과물은 CRT라이브러리가 Multithread DLL설정으로 사용시 필요한 라이브러리만 생성되므로 아래 4,5번 과정을
--rtl-dynamic빼고 한번, 설정하고 한번으로 해서 컴파일하면 VC에서 CRT를 사용하는 3가지 쓰레드 모델에 모두 적용가능한 라이브러리를 만들수 있다.
STLPort를 다운받아서 압축을 푼다.
1. stlport\stl\config\user_config.h에서 아래값 설정
#define _STLP_NEW_PLATFORM_SDK // Platform SDK를 사용하는 환경에서 사용시
#define _STLP_USE_MFC // MFC 사용시
2. stlport\stl\host.h에 아래값 설정
#define _STLP_LEAKS_PEDANTIC 1
#define _STLP_USE_NEWALLOC 1
#define _STLP_USE_MALLOC 1
#define _STLP_USE_STATIC_LIB // 정적(static) 라이브러리 사용시
3. cmd창을 띄우고 stlport폴더로 이동.
cd build\lib를 입력
4. configure -c msvc6
configure -c msvc6 --rtl-dynamic// 정적(static) 라이브러리 사용시는 --rtl-dynamic없이 4,5번 수행하고
--rtl-dynamic 설정하고 다시 4,5번 컴파일 과정을 반복한다.
※ 5.2.0은 STLPort 루트폴더에 있고 '-c' 옵션은 configure설정에서 사라졌으므로 빼고 설정하면 된다.
-> configure --help로 도움말을 볼수 있다.
5. nmake /fmsvc.mak clean install
-> build\lib\readme 파일을 보면 nmake설정을 볼수 있다.
clean -> build\lib\obj폴더 내용삭제
install -> 컴파일해서 생성된 obj폴더의 내용을 stlport루트 폴더의 lib,bin으로 옮겨주는 작업까지를 말한다.
6. lib,bin폴더에 컴파일된 결과물이 생긴다.
확인후 lib 폴더 안에 파일을 ..\Microsoft Visual Studio\VC98\Lib안에 복사한다.
bin폴더 내용을 C:\Windows\System32에 복사한다.
7. ..\Microsoft Visual Studio\VC98\Include에 stlport 폴더를 복사한다.
8. VC++6에 경로 등록(가장 상위로 이동)
Include files: "..\Microsoft Visual Studio\VC98\stlport\include"