E D R , A S I H C RSS

STL Port



1. Introduce

ํ‘œ์ค€ STL ๊ทœ๊ฒฉ์— ๋งž์ถฐ STLPort ํšŒ์‚ฌ๊ฐ€ ๋งŒ๋“  ํ‘œ์ค€ํ…œํ”Œ๋ฆฟ STL(Standard Template Language) ์˜คํ”ˆ์†Œ์Šค๋กœ์จ SGI STL์— ๊ธฐ๋ฐ˜ํ•˜๊ณ  ์žˆ์Œ.

2. ์„ค์น˜๋ฒ•

http://www.kwak101.pe.kr/wiki/wiki.php/STLport_VCผณฤก
๋ณธ ๋ฌธ์„œ๋Š” ์ƒ๊ธฐ์˜ ํŽ˜์ด์ง€์— ๋‚ด์šฉ์„ ๊ทธ๋Œ€๋กœ ์˜ฎ๊ธด๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฐœ์ธ ํ™ˆํŽ˜์ด์ง€์˜ ๋‚ด์šฉ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋งํฌ๊ฐ€ ๊นจ์งˆ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•œ ๋ฐฑ์—…์ด๋ฏ€๋กœ ๊ฐ€๋Šฅํ•˜๋ฉด ์›๋ž˜์˜ ํŽ˜์ด์ง€์—์„œ ๋ณด์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์ตœ์†Œํ•œ์˜ ์›์ž‘์ž์— ๋Œ€ํ•œ ์˜ˆ์˜์ด๊ฒ ์ฃ  ^^;;

3. ๋“ค์–ด๊ฐ€๊ธฐ ์ „์—

๋ณธ ๋ฌธ์„œ๋Š” Win32 ํ™˜๊ฒฝ์—์„œ Visual C++ ๋ฅผ ์‚ฌ์šฉํ•˜์‹œ๋Š” ๋ถ„๋“ค์ด STLport์˜ STL ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ๋„์›€์„ ์ฃผ๊ธฐ ์œ„ํ•˜์—ฌ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์ตœ์†Œํ•œ์˜ ์„ค์น˜ ๊ณผ์ •๋งŒ์„ ์‹ฃ๋Š”๋ฐ ์ดˆ์ ์„ ๋‘์—ˆ์œผ๋ฉฐ, Visual C++ 6 ์ดํ•˜์˜ ๋ฒ„์ „์—์„œ๋Š” ํ…Œ์ŠคํŠธํ•˜์ง€ ์•Š์•˜์Œ์„ ๋ฏธ๋ฆฌ ์•Œ๋ ค ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๊ธฐํƒ€ ์„ธ์„ธํ•œ ์ •๋ณด๋Š” ์™ธ๋ถ€ ์ž๋ฃŒ ๋ฌธ์„œํ™” ํŽ˜์ด์ง€ ํ˜น์€ ๊ฒŒ์‹œํŒ์—์„œ ์–ป๊ณ , ๋‚˜๋ˆ„์–ด ์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

STLport ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” SGI(์‹ค๋ฆฌ์ฝ˜ ๊ทธ๋ž˜ํ”ฝ์Šค)์˜ STL์„ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์šด์˜์ฒด์ œ ๋ฐ ๊ฐœ๋ฐœ ๋„๊ตฌ์—์„œ ์“ธ ์ˆ˜ ์žˆ๋„๋ก ํฌํŒ…ํ•œ ๊ฒƒ์œผ๋กœ, ANSI ํ‘œ์ค€์•ˆ์„ ์ถฉ์‹คํžˆ ๋”ฐ๋ฅด๊ณ  ์žˆ์œผ๋ฉฐ ์ด์™ธ์˜ ๋น„ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋„ ์ถฉ์‹คํžˆ ๊ตฌ๋น„ํ•ด ๋†“๊ณ  ์žˆ๋Š” ๊ณต๊ฐœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ ๋ช‡๊ฐ€์ง€ ์žฅ์ ์ด ๋” ๋ถ™์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ์ž…์ถœ๋ ฅ์ŠคํŠธ๋ฆผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๊ฐœ์„ ๋˜์—ˆ์Œ.
  2. MSVC ์ปดํŒŒ์ผ๋Ÿฌ์˜ ์ž์งˆ๊ตฌ๋ ˆํ•œ ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€๋ฅผ ๋ง‰์„ ์ˆ˜ ์žˆ๋‹ค (~cpp _msvc_warnings_off.h๊ฐ€ ์ค€๋น„๋˜์–ด ์žˆ์Œ)

์ž˜ ์•„์‹œ๊ฒ ์ง€๋งŒ, ๋ณธ ๋ฌธ์„œ๋Š” ์ฝ์œผ์‹œ๋Š” ๋ถ„๊ป˜์„œ Visual C++ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ๊ณผ C++ ์‚ฌ์šฉ์— ๋ถˆํŽธํ•ดํ•˜์ง€ ์•Š๊ณ  DOS ํ™”๋ฉด์„ ๋‘๋ ค์›Œํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฐ€์ • ํ•˜์— ์ž‘์„ฑํ–ˆ๊ณ , ์œˆ๋„์šฐ ํ™˜๊ฒฝ์„ ์ตœ๋Œ€ํ•œ ์‚ฌ์šฉํ•˜๋Š” ์ชฝ์œผ๋กœ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค. :)

4. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฐ›์•„ ๋†“๊ธฐ

  1. STLport ํŒจํ‚ค์ง€์˜ ์••์ถ• ํŒŒ์ผ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ์˜ ์ตœ์‹  ์•ˆ์ •ํ™” ๋ฆด๋ฆฌ์ฆˆ๋Š” 4.6.2 (STLport-4.6.2.tar.gz)์ž…๋‹ˆ๋‹ค.
    ์ €๋Š” ์˜ˆ์ „ ๋ฒ„์ „์ธ 4.5.3์„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค. (๋นŒ๋“œ ๋ฐ ์‚ฌ์šฉ๋ฐฉ๋ฒ•์— ์ฐจ์ด๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค)
  2. ๋งŒ๋งŒํ•ด ๋ณด์ด๋Š” ๋””๋ ‰ํ† ๋ฆฌ์— ์••์ถ•์„ ํ’‰๋‹ˆ๋‹ค.(์ฐธ๊ณ ๋กœ, ์ œ Visual Studio๋Š” D:\Programming Files2 ์— ์žˆ์Šต๋‹ˆ๋‹ค)
    1-decompress.GIF
  3. ์ˆœ์„œ๋Œ€๋กœ ๊ฐ„๋‹จํžˆ ๋””๋ ‰ํ† ๋ฆฌ ์„ค๋ช…์„ ๋“œ๋ฆฌ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ผ๋‹จ ํ›‘์–ด๋งŒ ๋ณด์‹œ์ฃ .
    • doc : ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜ ๋„์›€๋ง ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ ˆํผ๋Ÿฐ์Šค๊ฐ€ ๋“ค์–ด ์žˆ๋Š” ๋””๋ ‰ํ† ๋ฆฌ.
    • etc : ๋ง ๊ทธ๋Œ€๋กœ ๊ธฐํƒ€ ์žก๋‹ค๊ตฌ๋ฆฌํ•œ ํŒŒ์ผ๋“ค์ด ์žˆ๋Š” ๋””๋ ‰ํ† ๋ฆฌ
    • lib : ์ปดํŒŒ์ผ๋œ STLport ์žฌ์‚ฌ์šฉ ๋ฐ”์ด๋„ˆ๋ฆฌ(lib, dll)๊ฐ€ ๋“ค์–ด๊ฐ€๋Š” ๋””๋ ‰ํ† ๋ฆฌ. (์ฒ˜์Œ์—” ์—†๋‹ค๊ฐ€ ๋‚˜์ค‘์— ์ƒ๊ธธ๊ฒ๋‹ˆ๋‹ค.)
    • src: ์žฌ์‚ฌ์šฉ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ๋นŒ๋“œํ•˜๊ธฐ ์œ„ํ•œ ํ”Œ๋žซํผ ๋ณ„ ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์ด ์žˆ๋Š” ๋””๋ ‰ํ† ๋ฆฌ. (์ฃผ์˜: vc6.mak ํŒŒ์ผ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ด ๋ณด์„ธ์š”. ๋นŒ๋“œ์— ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค)
    • stlport : STL ํ—ค๋”์™€ ๋ฐ”์ด๋„ˆ๋ฆฌ ์†Œ์Šค๊ฐ€ ๋“ค์–ด ์žˆ๋Š” ๋””๋ ‰ํ† ๋ฆฌ. STLport ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋ชธํ†ต์ž…๋‹ˆ๋‹ค.
    • test : STLport๊ฐ€ ์„ค์น˜๋œ ํ›„ ์ œ๋Œ€๋กœ ์„ค์น˜๋˜์—ˆ๋‚˜ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•œ ํ…Œ์ŠคํŠธ ํ”„๋กœ๊ทธ๋žจ ์†Œ์Šค.

5. ์ž…์ถœ๋ ฅ์ŠคํŠธ๋ฆผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ปดํŒŒ์ผํ•˜๊ธฐ

STLport ๋ฒ„์ „์˜ ์ž…์ถœ๋ ฅ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งŒ๋“œ๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค.์•Œ๋ ค์ง„ ๋ฐ”์— ์˜ํ•˜๋ฉด, VC++์— ๋“ค์–ด ์žˆ๋Š” ๊ธฐ๋ณธ(stock) ์ž…์ถœ๋ ฅ์ŠคํŠธ๋ฆผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ณด๋‹ค ์ด๊ฒƒ์ด ๋” ์„ฑ๋Šฅ์ด ์ข‹๊ณ  ์•ˆ์ •์ ์ด๋ผ๊ณ  ํ•˜์ง€์š”.
  1. Visual C++๋ฅผ ์—ด๊ณ , File > Open ๋ฉ”๋‰ด๋กœ src\vc6.mak ๋ฉ”์ดํฌํŒŒ์ผ์„ ์ฝ์–ด ๋“ค์ž…๋‹ˆ๋‹ค.
    • ๋ฉ”์ดํฌ ํŒŒ์ผ์„ ์ฝ์œผ๋ฉด, ์•„๋ž˜์™€ ๊ฐ™์€ ๋Œ€ํ™” ์ƒ์ž๊ฐ€ ๋‚˜์™€ "ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค๊ฒ ๋ƒ๊ณ  ๋ฌผ์–ด ๋ณด๋Š”๋ฐ, ๋‹น์—ฐํžˆ ์˜ˆ ํ•˜์‹œ๊ณ , ์ ๋‹นํ•œ ์ด๋ฆ„(์˜ˆ: STLP_vc6)์„ ์ง“์ฃ . ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์ธ .dsp์™€ .dsw๊ฐ€ ๋งŒ๋“ค์–ด ์ง€๋ฉด์„œ ์žฌ์‚ฌ์šฉ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
      2-VC6mak_read.GIF
  2. ์žฌ์‚ฌ์šฉ ๋ฐ”์ด๋„ˆ๋ฆฌ๋Š” STLport ํŒจํ‚ค์ง€์— ์žˆ๋Š” ํ‘œ์ค€ C++ ํ—ค๋”๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋นŒ๋“œ๋˜๋ฏ€๋กœ, VC++์ด ์ด ํ—ค๋”๋ฅผ ๊ฐ€์žฅ ๋จผ์ € ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด ์ง“์„ ํ•ด ์ค์‹œ๋‹ค.
    • Tools ๋ฉ”๋‰ด > Options ํ•ญ๋ชฉ > Directories ํƒญ์—์„œ, Include Files ๋ชฉ๋ก์— stlport ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ๋‚˜์„œ ์ด๊ฒƒ์„ ์ฒซ ์ค„๋กœ ์˜ฌ๋ฆฝ๋‹ˆ๋‹ค.
      3-prebuild_includePath.GIF
  3. ์ด์ œ Rebuild All์„ ํ•˜์‹œ๋“ ์ง€ ํ•ด์„œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋นŒ๋“œ๋กœ ๋“ค์–ด ๊ฐ‘๋‹ˆ๋‹ค,
    ์ด๋•Œ, stlport\new ํ—ค๋” ํŒŒ์ผ์˜ 2์ค„์—์„œ ์—๋Ÿฌ๋ฅผ ์ผ์œผํ‚ค๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋Š”๋ฐ์š”, ๋„ค์ž„์ŠคํŽ˜์ด์Šค std::๋ฅผ ๋ถ™์—ฌ ์ฃผ๋„๋ก ํ•ฉ์‹œ๋‹ค. (์•„๋ž˜์˜ ๊ทธ๋ฆผ์—์„œ if ๋‹ค์Œ์˜ 2์ค„์ž…๋‹ˆ๋‹ค)
  4. 4-compileError.GIF
  5. ์ด์ œ ๋‹ค์‹œ ๋นŒ๋“œํ•ฉ๋‹ˆ๋‹ค( - -; ). ์‹œ์Šคํ…œ์— ๋”ฐ๋ผ ์ฐจ์ด๋Š” ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋‚˜ 1์‹œ๊ฐ„ ์ •๋„ ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค.๋‹ค์Œ ๊ทธ๋ฆผ์€ ๋นŒ๋“œ๊ฐ€ ๋๋‚œ ์ƒํƒœ์˜ output ์œˆ๋„์šฐ์ž…๋‹ˆ๋‹ค.
    5-STLport_Lib.GIF
  6. ๋นŒ๋“œํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋ณ„๋‹ค๋ฅธ ์กฐ์ •์„ ํ•ด ์ฃผ์ง€ ์•Š์•˜๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด lib ๋””๋ ‰ํ† ๋ฆฌ์™€ ํ•จ๊ป˜ ๋งŒ๋“ค์–ด์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

    6-postbuild.GIF
    • ๊ธฐ๋ณธ์ ์œผ๋กœ ๋งŒ๋“ค์–ด์ง€๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์ด 6๊ฐœ์ž…๋‹ˆ๋‹ค. ์ด์ค‘ "stldebug"๋ž€ ๋ฌธ์ž์—ด์ด ๋“ค์–ด ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” STLport ์ „์šฉ์˜ ๋””๋ฒ„๊ทธ ๊ธฐ๋Šฅ์ด ํ•จ๊ป˜ ๋“ค์–ด ์žˆ๋Š” ๋ฒ„์ „์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ๋ฐฉ๋ฒ•์€ ์•„๋ž˜์˜ "๋””๋ฒ„๊ทธ ๊ธฐ๋Šฅ ์‚ฌ์šฉํ•˜๊ธฐ"์—์„œ ๋ณด์‹ญ์‹œ์˜ค.
      • DLL์€ debug/(release)์˜ 2๊ฐœ์ž…๋‹ˆ๋‹ค.
      • LIB์€ debug/(release), debug_static/(release)_static์˜ 4๊ฐœ์ž…๋‹ˆ๋‹ค.

5.1. <!> ์ž…์ถœ๋ ฅ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋นŒ๋“œํ•˜์ง€ ์•Š์„ ๋ถ„๋“ค์€?

์ด ์ ˆ์˜ ์„ค๋ช…๊ณผ ์ดํ›„์˜ ์„ค๋ช…์„ ๋ชจ๋‘ ๊ฑด๋„ˆ ๋›ฐ์‹œ๊ณ , stlport ํด๋” ์ „์ฒด๋ฅผ VC++ ํด๋”์˜ /include ํด๋”์— ๋ณต์‚ฌํ•˜์‹ญ์‹œ์˜ค. ๊ทธ๋ฆฌ๊ณ  "ํ”„๋กœ๊ทธ๋žจ ๊ด€๋ จ ์„ธํŒ…" ์ ˆ๋ถ€ํ„ฐ ์ฝ์œผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋‹จ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ด€๋ จ ๋ถ€๋ถ„์€ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค.

6. STLport ์™„์ „ํžˆ ์„ค์น˜ํ•˜๊ธฐ

๋งŒ๋“ค์–ด์ง„ STLport์˜ ์žฌ์‚ฌ์šฉ ๋ฐ”์ด๋„ˆ๋ฆฌ์™€ ํ‘œ์ค€ ํ—ค๋”๋ฅผ ๋น„์ฃผ์–ผ ์ŠคํŠœ๋””์˜ค์—์„œ ์“ธ ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค.
  1. DOS ์ฐฝ์„ ์—ด๊ณ , STLport ํŒจํ‚ค์ง€๊ฐ€ ํ’€๋ฆฐ ์œ„์น˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ src ๋””๋ ‰ํ† ๋ฆฌ(์œ„์—์„œ ํ™•์ธํ•˜์…จ์ฃ ?)๋ฅผ ์ฐพ์•„ ๊ฐ‘๋‹ˆ๋‹ค.
    ~cpp   E:\STLport-4.5.3\src\ 
    
  2. ๋„์Šค ํ”„๋กฌํ”„ํŠธ์—์„œ nmake install์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
    ~cpp  E:\STLport-4.5.3\src\nmake -f vc6.mak install 
    
    • ์‹œ์Šคํ…œ์ด ์•Œ๊ณ  ์žˆ๋Š” ๋น„์ฃผ์–ผ ์ŠคํŠœ๋””์˜ค์˜ ์ธํด๋ฃจ๋“œ ํŒจ์Šค์™€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒจ์Šค์— STLport ํ—ค๋”์™€ ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ๋ณต์‚ฌ๋  ๊ฒ๋‹ˆ๋‹ค.

      7-makeInstall.GIF

7. ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ด€๋ จ ์„ธํŒ…

7.1. ์ตœ์ดˆ ์„ธํŒ…: ์ธํด๋ฃจ๋“œ ๊ฒฝ๋กœ ์กฐ์ •

1. ๋น„์ฃผ์–ผ C++๊ฐ€ STLport์˜ ํ—ค๋”ํŒŒ์ผ์„ ๊ฐ€์žฅ ๋จผ์ € ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋„๋ก ์ธํด๋ฃจ๋“œ ๊ฒฝ๋กœ๋ฅผ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค.
  • Tools > Options ๋ฉ”๋‰ด > Directories ํƒญ์—์„œ, Include Files ๋ชฉ๋ก์— ๋ฐฉ๊ธˆ ์ถ”๊ฐ€๋œ stlport ๋””๋ ‰ํ† ๋ฆฌ(๋Œ€๊ฐœ C:/Program Files/Microsoft Visual Studio/VC98/include/stlport์ด๊ฒ ์ง€์š”)๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ๋‚˜์„œ, ์ด ํ•ญ๋ชฉ์„ ๊ฐ€์žฅ ์ฒซ ์ค„๋กœ ์˜ฌ๋ฆฝ๋‹ˆ๋‹ค.

7.2. ๋Ÿฐํƒ€์ž„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์กฐ์ •ํ•˜๊ธฐ

STLport๋Š” ์ƒ์šฉ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์—, ๋งํฌ ์‹œ ์‚ฌ์šฉํ•˜๋Š” STLport ์ „์šฉ C++ ๋Ÿฐํƒ€์ž„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(์ž…์ถœ๋ ฅ์ŠคํŠธ๋ฆผ์ด ์žˆ๋Š”) ์ง์ ‘ ์„ค์ •ํ•ด ์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ์ œ๋Œ€๋กœ ์ดํ•ดํ•˜๋ ค๋ฉด ์šฐ์„  VC++๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋Ÿฐํƒ€์ž„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์•Œ์•„ ๋ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. VC++6์˜ ๋Ÿฐํƒ€์ž„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” VC98/lib ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ •์ /๋™์  ๋งํฌ์—ฌ๋ถ€์— ๋”ฐ๋ผ ํฌ๊ฒŒ ~cpp LIBxxx.lib ๋ฒ„์ „๊ณผ ~cpp MSVCxxx.lib ๋ฒ„์ „์œผ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ์—์„œ ์กฐ์ •ํ•˜๋Š” ๋ถ€๋ถ„์€ Project > Setting ๋ฉ”๋‰ด๋กœ ์—ด๋ฆฌ๋Š” C/C++ ํƒญ์ž…๋‹ˆ๋‹ค. C/C++ ํƒญ์—์„œ "Code Generation" ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ์„ ํƒํ•˜๋ฉด Use Run-time Library ๋“œ๋กญ๋‹ค์šด ๋ฐ•์Šค๋ฅผ ์กฐ์ •ํ•ด ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋””๋ฒ„๊ทธ ์ •๋ณด ํฌํ•จ(debug) ์œ ๋ฌด, ๋Ÿฐํƒ€์ž„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์Šค๋ ˆ๋”ฉ(thread) ๋ชจ๋“œ, ๋™์  ๋งํฌ ์—ฌ๋ถ€(DLL)์˜ ์กฐํ•ฉ์„ ๊ฒฐ์ •ํ•ด ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธด ์„ค๋ช…์€ ๋นผ๊ณ , ๊ฐ„๋‹จํžˆ ์ •๋ฆฌํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. (MSDN์˜ ์„ค๋ช…์„ ์ฐธ๊ณ ํ•˜์—ฌ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค)
  • C ๋Ÿฐํƒ€์ž„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ (iostream ์—†์Œ) : VC++6 ์šฉ
    "Use Run-time Library" ํ•ญ๋ชฉ ์ด๋ฆ„ ํŠน์ง• ์ปดํŒŒ์ผ ์˜ต์…˜ ํ™˜๊ฒฝ๋ณ€์ˆ˜์ •์˜
    Single-Threaded LIBC.LIB ๋‹จ์ผ ์Šค๋ ˆ๋“œ, ์ •์  ๋งํฌ /ML
    Multithreaded LIBCMT.LIB ๋‹ค์ค‘์Šค๋ ˆ๋“œ, ์ •์  ๋งํฌ /MT _MT
    Multithreaded DLL MSVCRT.LIB ๋‹ค์ค‘์Šค๋ ˆ๋“œ, ๋™์ ๋งํฌ /MD _MT, _DLL
    • Debug ๋ฒ„์ „์˜ ๊ฒฝ์šฐ์—” ๊ฐ ๋Ÿฐํƒ€์ž„Lib ํ•ญ๋ชฉ์— "Debug"๋ž€ ๋ฌธ์ž์—ด์ด ๋ถ™๊ณ , ๊ฐ ์ด๋ฆ„์˜ .LIB์•ž์— "D"๊ฐ€ ๋ถ™๊ณ , ๊ฐ ํ™˜๊ฒฝ๋ณ€์ˆ˜์— "_DEBUG"๊ฐ€ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.
  • ํ‘œ์ค€ C++ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ : VC++6 ์šฉ
    "Use Run-time Library" ํ•ญ๋ชฉ์ด๋ฆ„ ํŠน์ง• ์ปดํŒŒ์ผ ์˜ต์…˜ ํ™˜๊ฒฝ๋ณ€์ˆ˜์ •์˜
    Single-Threaded LIBCP.LIB ๋‹จ์ผ ์Šค๋ ˆ๋“œ, ์ •์  ๋งํฌ /ML
    Multithreaded LIBCPMT.LIB ๋‹ค์ค‘ ์Šค๋ ˆ๋“œ, ์ •์  ๋งํฌ /MT _MT
    Multithreaded DLL MSVCPRT.LIB ๋‹ค์ค‘ ์Šค๋ ˆ๋“œ, ๋™์  ๋งํฌ /MD _MT, _DLL
    • ์—ญ์‹œ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, Debug ๋ฒ„์ „์˜ ๊ฒฝ์šฐ์—” ๊ฐ ๋Ÿฐํƒ€์ž„Lib ํ•ญ๋ชฉ์— "Debug"๋ž€ ๋ฌธ์ž์—ด์ด ๋ถ™๊ณ , ๊ฐ ์ด๋ฆ„์˜ .LIB์•ž์— "D"๊ฐ€ ๋ถ™๊ณ , ๊ฐ ํ™˜๊ฒฝ๋ณ€์ˆ˜์— "_DEBUG"๊ฐ€ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.
์ด๋ ‡๊ธฐ ๋•Œ๋ฌธ์—, STLport์šฉ C++ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋„ ์—ฌ๊ธฐ์— ๋งž์ถฐ ์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์„ธ ๊ฐœ์˜ ๋งคํฌ๋กœ ์ƒ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • STLport์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ ํƒ: VC++6์šฉ
    ์ •์˜ํ•œ ๋งคํฌ๋กœ ์ƒ์ˆ˜๋Œ€์‘๋˜๋Š” "Use Run-time Library" ์„ค์ •๋งํฌ๋˜๋Š” STLport ๋Ÿฐํƒ€์ž„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
    _STLP_USE_STATIC_LIB <*><*threaded> stlport_vc6_static.lib
    _STLP_USE_DYNAMIC_LIB <*><*threaded> DLL stlport_vc6.lib
    _STLP_USE_STATICX_LIB <*><*threaded><*> "DLL"์ด๋ฉด stlport_vc6.lib, ์•„๋‹ˆ๋ฉด stlport_vc6_static.lib

7.3. <!> ๋Ÿฐํƒ€์ž„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ธํŒ…์ด ์ž˜ ์•ˆ๋  ๋•Œ

_STLP_USE_STATIC_LIB ์ƒ์ˆ˜๋ฅผ ์ •์˜ํ•œ ํ›„์— "Use Run-time Library" ์„ค์ •์„ <*><*threaded>์œผ๋กœ ๋งž์ถ˜ ๋’ค์—๋„ ~cpp LNK2005 ์—๋Ÿฌ์™€ ~cpp LNK4098 ๊ฒฝ๊ณ ๊ฐ€ ๋™์‹œ์— ๋‚˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ์—๋Ÿฌ๊ฐ€ ๋‚˜์˜ฌ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
~cpp 
 LIBCMT.lib(osfinfo.obj) : error LNK2005: __alloc_osfhnd already defined in LIBC.lib(osfinfo.obj)
 LIBCMT.lib(osfinfo.obj) : error LNK2005: __set_osfhnd already defined in LIBC.lib(osfinfo.obj)
 .
 .
 .
 LINK : warning LNK4098: defaultlib "LIBCMT" conflicts with use of other libs; use /NODEFAULTLIB:library
 <์‹คํ–‰ํŒŒ์ผ๊ฒฝ๋กœ> : fatal error LNK1169: one or more multiply defined symbols found
 Error executing link.exe.
์ด๋Š”, VC๊ฐ€ ์ฝ”๋“œ ์ƒ์„ฑ ์˜ต์…˜์„ ๋ฌด์‹œํ•˜๊ณ  LIBCMT.lib์„ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ง๋Œ€์–ด ๋„ฃ์–ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์‹คํ–‰ํŒŒ์ผ์„ ๋งŒ๋“œ๋Š” ๊ฒฝ์šฐ๋ผ๋ฉด ์—๋Ÿฌ๊ฐ€ ๊ฐ€์žฅ ์„ฑ๊ฐ€์‹ค ํ…Œ์ง€๋งŒ, ๋ฐฐํฌ์šฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งŒ๋“ค ๊ฒฝ์šฐ์—” ๊ฒฝ๊ณ ๋„ ์—†์•  ์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์—๋Ÿฌ์™€ ๊ฒฝ๊ณ ๋ฅผ ์—†์• ๊ธฐ ์œ„ํ•ด์„œ๋Š”, ์œ„์— ๋‚˜์˜จ ๋ง์ปค ๋ฉ”์‹œ์ง€ ๋Œ€๋กœ /NODEFAULTLIB ์˜ต์…˜์„ ์จ์•ผ ํ•ฉ๋‹ˆ๋‹ค. VC IDE๋ฅผ ์“ฐ๊ณ  ๊ณ„์‹œ๋‹ค๋ฉด Project->Setting ๋ฉ”๋‰ด๋ฅผ ์„ ํƒํ•˜๊ณ  ๋‚˜์˜ค๋Š” ๋Œ€ํ™”์ƒ์ž์—์„œ "Link" ํƒญ์„ ์„ ํƒํ•˜์‹œ๊ณ , "Input" ๋“œ๋กญ๋‹ค์šด ํ•ญ๋ชฉ์„ ๊ณ ๋ฅธ ํ›„์— "Ignore Libraries" ์—๋””ํŠธ ์ƒ์ž์— LIBCMT.lib๋ฅผ ์จ ๋„ฃ์œผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.
์ด์™ธ์—๋„, ๊ธฐ๋ณธ ๋Ÿฐํƒ€์ž„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ๊ด€๋ จ๋œ ๋‚ด์šฉ์˜ URL์„ ์ฒจ๋ถ€ํ•˜๋‹ˆ, ์ฐธ๊ณ ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

7.4. ๋””๋ฒ„๊ทธ ๊ธฐ๋Šฅ ์‚ฌ์šฉํ•˜๊ธฐ

STLport์—๋Š” ์ž์ฒด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์ž์ฒด ๋””๋ฒ„๊ทธ ์ •๋ณด๋ฅผ ๋‚ด์–ด ์ฃผ๋Š” ๋…ํŠนํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณด์ถฉ์„ค๋ช…์€ ์ดํŽ™ํ‹ฐ๋ธŒ STL์˜ ํ•ญ๋ชฉ 50์„ ์ฐธ๊ณ ํ•˜์‹ญ์‹œ์˜ค. ์—ฌ๊ธฐ์„œ๋Š” STLport์˜ ๋””๋ฒ„๊ทธ ๊ธฐ๋Šฅ์„ ํ™œ์„ฑํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•๋งŒ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.๋ง์€ ๊ฑฐ์ฐฝํ•˜์ง€๋งŒ, ๋ณธ๋ก ์€ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๋จผ์ € ์ปดํŒŒ์ผ๋˜๋Š” ํŒŒ์ผ(.h/.cpp)์˜ ์•ž๋ถ€๋ถ„์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด
~cpp 
#define _STLP_DEBUG
_STLP_DEBUG๋ž€ ์‹ฌ๋ณผ์„ ์ •์˜ํ•ด ๋‘๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด, "stldebug" ๋ฌธ์ž์—ด์ด ํฌํ•จ๋œ lib๊ณผ DLL์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

8. ํ…Œ์ŠคํŠธ

์ด์ œ ๋‹ค ๋๋‚ฌ์Šต๋‹ˆ๋‹ค. STLport๊ฐ€ ์ œ๋Œ€๋กœ ์„ค์น˜๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ์˜๋ฏธ์—์„œ, ํŒจํ‚ค์ง€์— ๋“ค์–ด ์žˆ๋Š” ๋ฉ”์ดํฌ ํŒŒ์ผ์„ Visual C++์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ์€ ํ›„์— ๋นŒ๋“œํ•ด ๋ณด์„ธ์š”.
~cpp  test\eh\vc6.mak
 test\regression\vc6.mak
์ž๋™์œผ๋กœ ํ…Œ์ŠคํŠธ๊นŒ์ง€ ํ•ด ์ค„ ๊ฒ๋‹ˆ๋‹ค.

9. ๋ฌธ์ œ ํ•ด๊ฒฐ

9.1. nmake์— ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ

๋งŒ์•ฝ์— nmake๊ฐ€ ์‹คํ–‰๋˜๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์žˆ๊ฑฐ๋‚˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜๊ฐ€ ์ œ๋Œ€๋กœ ๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๋ฉด, ๋น„์ฃผ์–ผ ์ŠคํŠœ๋””์˜ค์— ๊ด€๋ จ๋œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ์‹œ์Šคํ…œ์— ์ œ๋Œ€๋กœ ๋“ฑ๋ก๋˜์ง€ ์•Š์€ ์ด์œ ๊ฐ€ ๋Œ€๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ, VCVARS32.BAT๋ฅผ ์‹คํ–‰ํ•œ ํ›„์— ๋‹ค์‹œ nmake install์„ ํ•ด ๋ณด์„ธ์š”.

9.2. ํ”Œ๋žซํผ SDK๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ "InterlockedIncrement" ๊ด€๋ จ ์ปดํŒŒ์ผ ์—๋Ÿฌ๊ฐ€ ๋‚  ๋•Œ

์ƒ๊ธฐ๋Š” ์—๋Ÿฌ๋Š” ์ด๋Ÿฐ ๋ฅ˜์˜ ๋ฉ”์‹œ์ง€์ž…๋‹ˆ๋‹ค:
~cpp 
e:\microsoft visual studio\vc98\include\stlport\stl\_threads.h(122) : 
error C2733: second C linkage of overloaded function 'InterlockedIncrement' not allowed 
e:\microsoft visual studio\vc98\include\stlport\stl\_threads.h(122) : see declaration of 
'InterlockedIncrement' 
์ด ์ปดํŒŒ์ผ ์—๋Ÿฌ๋ฅผ ๋ง‰์œผ๋ ค๋ฉด, STLport๊ฐ€ ์„ค์น˜๋œ ๋””๋ ‰ํ† ๋ฆฌ(๋Œ€๊ฐœ C:/Program Files/Microsoft Visual Studio/VC98/include/stlport์ด๊ฒ ์ง€์š”) ์—์„œ stl_user_config.h๋ฅผ ์ฐพ์•„ ์—ด๊ณ , ๋‹ค์Œ ๋ถ€๋ถ„์„ ์ฃผ์„ ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค.
~cpp 
// # define _STLP_NEW_PLATFORM_SDK 1  

10. ๋ฌธ์„œ ์ •๋ณด

  • ์ตœ์ดˆ ์ž‘์„ฑ ๋‚ ์งœ :2002/03/02
  • ์ตœ์ข… ์—…๋ฐ์ดํŠธ ๋‚ ์งœ : ์ด ํŽ˜์ด์ง€ ์•„๋ž˜์— ์žˆ๋Š” "last modified"์— ๋‚˜์™€ ์žˆ์Œ
  • ์ ์šฉ ํ”Œ๋žซํผ : Win32 / VC++ 6
  • ์ž‘์„ฑ์ž : ๊ณฝ์šฉ์žฌ (kwak101@hitel.net)

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:27:57
Processing time 0.0128 sec