E D R S I H C RSS
ID
Password
Join
자연은 일회용이 아닙니다. -공익광고협의회



Contents

1 INSTALL file for STLport 4.5
1.1 STLPort의 설치
2 Redpixel이 STLPort를 VC에 설치한 과정
2.1 패스 패치
2.2 다운로드 및 압축해제
2.3 컴파일 및 설치
2.4 VC 상에서 조정사항
2.5 테스트
2.6 추가 수정사항
2.7 참고사항

1 INSTALL file for STLport 4.5 #


(STLPort는 거의 현존하는 모든 운영체계와 컴파일러에서 작동하는 라이브러리입니다. 고로 아래 글은 Win32 프로그래밍하시는 분에게는 해당되지 않는 내용이 있을 수 있습니다.)

STLport-4.5은 ANSI C++ 표준을 완벽히 지원하는 라이브러리이다.

이 배보폰은 STLPort 소스들만 담고있다 (바이너리화일은 없다) STLPort iostream을 사용하고 싶다면, src 디렉토리에 있는 소스들로부터 STLPort 라이브러리를 빌드하고, 여러분의 프로그램을 이 것과 링크해야만 한다.

이것은 pre-4.0 릴리즈 이후로 주요 변경된 점이다. 아래 단계를 주의깊게 읽기 바란다.

1.1 STLPort의 설치 #

  1. 컴파일 시 억세스가능한 디렉토리로 STLPort를 압축해제한다. 주의 : 설령 백업을 해놓았다 하더라도 절대로 컴파일러와 같이 딸려오는 헤더화일에 덮어쓰지 말아라! - 이렇게 하면 절대로 동작하지 않는다!
  2. stlport 디렉토리를 컴파일러의 검색 경로중 하나로 설정한다. (역주 : 일반적으로 include에 해당하는 디렉토리 path 옵션이 있다. ^^)
  3. stlport 디렉토리 이름을 변경하지 말아라. 컴파일 에러가 발생할 수 있다. 주의 : configure를 실행하려고 하지 말아라!
    (변역이 귀찮아서 아래 원문을 남겨둡니다. VC를 쓰는데에는 관련없습니다.)
  4.   NOTE : Do NOT attempt to run "configure" ! It is deprecated, moved to safe standalone folder
              and should be used as a helper to create initial config for a new compiler only. 
              Your compiler should be recognized by STLport source code with no configuring.
    	  Please edit appropriate configuration header for your compiler
              directly if you have to make compiler-specific configuration changes.
    


  5. src 디렉토리를 열어본다. 다양한 컴파일러들을 위한 makefile들이 담겨져있다. 만일 여러분이 사용하는 '특별한' 컴파일러를 위한 makefile을 찾을 수 없다면, 여러분이 사용하는 것과 가장 유사한 make 엔진을 찾아서 그것을 사용하라. 커맨드 라인 컴파일이 가능한지 확인한다. VC에서는 add environment variables를 해주어야하고, 그외는 알아서 설치하도록...^^ (귀찮아서 생략)
    • 중요 : 만약 STLPort iostreams 를 사용하지 않을 계획이라면, 라이브러리를 빌드할 필요가 없다. 대신 아래를 실행해라.
    • 알맞은 makefile을 사용하기 위해서 다음을 실행한다.
      make -f <your compiler name>.mak prepare
      
    • 이것을 절대로 그냥 넘어가면 안된다! 몇몇 플렛폼에서는 필요한 심볼릭 링크들을 생성한다. 만약 STLPort iostream을 빌드할 것이라면, 이 단계는 make all을 실행할때 자동적으로 실행된다.

    • stlport/stl_user_config.h 화일에서 _STLP_NO_OWN_IOSTREAMS이 주석처리되어있을텐데 이것을 해제해라. 이 설정이후에는 STLPort iostream을 사용하지 않는다는 뜻이되며, 여러분의 존재하는 iostream를 인용하는 wrapper 선언들을 사용할 것이다. 이 경우에는 STLPort의 바이너리 라이브러리는 필요하지 않다.
      • 부가적인 참조사항 :
        • 새로운 스타일의 ANSI iostream은 여러분의 시스템에서 허용되지 않을수도 있다.
        • 컴파일러 자체의 iostream은 STLPort 버젼보다 대부분 느리다.

2 Redpixel이 STLPort를 VC에 설치한 과정 #

2.1 패스 패치 #

아무 폴더에서 nmake를 해 보시고 안돼면 MSVC 6.0에서 VCVARS32.bat를 한번 실행 시켜주어야 됩니다. ^^ 그러면 밑에 나오는 nmake가 패스 패치돼어서 어떤 폴더에서든 실행 시킬수 있습니다. -by 이 글보고 따라한 우지사내가

2.2 다운로드 및 압축해제 #

[http]이곳에서 다운로드를 받은 후, 우선 아무 디렉토리에 압축을 풉니다. 나중에 명령 프롬프트에서 찾아가기 어려우니깐 저는 그냥 C: 루트에 풀었습니다.

2.3 컴파일 및 설치 #

C:\Stlport-4.5.3에 압축을 풀었다고 가정하면 다음과 같이 실행합니다. (nmake입니다. 주의!)

C:\Stlport-4.5.3> cd src
C:\Stlport-4.5.3\src> copy vc6.mak makefile
C:\Stlport-4.5.3\src> nmake clean all

중간에 warning이 간혹 뜨는데 모두 무시하시길... :) 끝나면, 다음과 같이 한번더 실행합니다.

C:\Stlport-4.5.3\src> nmake install

이제 VC디렉토리에 잘 설치가 되어 있을겁니다. 디렉토리로 가서 확인해봅니다.

2.4 VC 상에서 조정사항 #

  1. Tools->Options->Directory 에서 Include부분에 STLPort 디렉토리를 추가합니다. (주의 : Visual Studio의 VC98 디렉토리내의 Include디렉토리 안에 있습니다! 이것을 추가하셔야 합니다. 예를 들면, 디폴트로 VC를 인스톨했다면 "C:\Program Files\Microsoft Visual Studio\vc98\include\stlport"가 됩니다.)
  2. 추가한 디렉토리를 위로 움직여 가장 먼저 참조되도록 만들어줍니다. (이것은 기존 STL과 선언이 중복되지 않게 하기 위해서입니다)

2.5 테스트 #

다음과 같이 실행합니다.
C:\Stlport-4.5.3> cd test\eh
C:\Stlport-4.5.3\test\eh> copy vc6.mak makefile
C:\Stlport-4.5.3\test\eh> nmake

eh done 이라는 메세지가 뜨면 테스트 완료입니다.

2.6 추가 수정사항 #

  • 아마도 MS홈페이지에서 새로운 플렛폼 SDK를 설치해서 쓰시는 분들은 Interlocked... 관련 함수들에 대한 에러가 발생할 겁니다. stlport디렉토리에서 stl_user_config.h화일중 다음부분을 주석해제 하시기 바랍니다.
    // boris : this setting is here as we cannot detect precense of new Platform SDK automatically 
    // If you are using new PSDK with VC++ 6.0 or lower, please define this to get correct prototypes for InterlockedXXX functions
    // # define _STLP_NEW_PLATFORM_SDK 1
    
    이것을,
    // boris : this setting is here as we cannot detect precense of new Platform SDK automatically 
    // If you are using new PSDK with VC++ 6.0 or lower, please define this to get correct prototypes for InterlockedXXX functions
    # define _STLP_NEW_PLATFORM_SDK 1
    
    이렇게 하시면 됩니다. 주의 : 이렇게 고치는 것은 플렛폼 SDK업그레이드를 하신 분에게만 해당되는 것입니다. 그렇지 않은 분은 주석을 풀면 에러가 나게 됩니다.

2.7 참고사항 #

  • 컴파일 하시면 엄청난 양의 디버그용 warning 메세지를 쏟아냅니다. 이게 STL에 잘못이 있는게 아니라 템플릿 라이브러리에 대한 처리를 잘못 설정한 것 때문이라고 하네요. 작성하는 소스코드에 다음과 같이 설정하면 깔끔하게 해결됩니다.
    #pragma warning ( disable : 4786)
    
  • STLPort의 단점이라고도 할수 있는데... VC를 쓴다면 Project->Settings->C/C++->Code Generation->Use Runtime Library를 MultiThreaded/MultiThreaded DLL로 설정해야합니다. (싱글 쓰레드로 놓으니 에러나는 군요. -_-a)
  • 어느정도 사용해보니 VC++에서 사용할 경우에는 iostream을 VC++용으로 사용하는 것이 더 편하다는 것을 느꼈습니다. (에러가 있을 줄 알았는데, platform SDK 업글하면 괜찮습니다.) STLPort용 iostream을 사용하면 항상 결과물에 sgi iostream 호환용 dll이 따라다녀야하기 때문에 번거롭기도 하죠. 그냥 stlport만을 사용하고, sgi 호환 iostream을 사용하지 않으려면 stl_user_config.h 화일에서 다음 부분을 주석해제하면 됩니다.
    #define   _STLP_NO_OWN_IOSTREAMS	1
    #define   _STLP_NO_NEW_IOSTREAMS	1
    

좋은 글 감사합니다. "에러나 기타등등 모두 무시하시길...^^ 끝나면, 다음과 같이 한번더 실행합니다. " 라는 부분이 무슨 말인가요 전 NMAKE : fatal error U1077: 'cl.exe' : return code '0x2' 라는 에러가 뜨는데 혹시,,,, 답을 알고 계시면 알려주세요 미리 감사^^ - 210.97.254.10

제 인스톨은 vc6에서만 돌려보았습니다. vc.net 2003에서는 어떤지 모르겠지만 잘되는걸로 알고 있습니다. 에러는 아니고 warning인데... 글이 좀 헛갈릴 염려가 있으니 고쳐놓겠습니다. - redpixel

저도 마지막 테스트부분에서 fatal error U1077: 'cl.exe' : return code '0x2' 뜨네요... 무슨 문제일까요.. VC 6이고요... -- 허걱 2004-11-17

vc6에서의 테스트는 제가 할수가 없는 상황이라서... on_ -- redpixel 2004-11-17

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2010-10-28 12:42:54
Processing time 0.5090 sec