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
  1. ˆœ„œ๋Œ€๋กœ ๊ฐ„๋‹จžˆ ๋””๋ ‰† ๋ฆฌ „ค๋ช…„ ๋“œ๋ฆฌ๋ฉด ๋‹คŒ๊ณผ ๊ฐ™Šต๋‹ˆ๋‹ค. ผ๋‹จ ›‘–ด๋งŒ ๋ณด‹œฃ .
    • 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.0399 sec