Contents
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 ํ์ค์์ ์ถฉ์คํ ๋ฐ๋ฅด๊ณ ์์ผ๋ฉฐ ์ด์ธ์ ๋นํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ถฉ์คํ ๊ตฌ๋นํด ๋๊ณ ์๋ ๊ณต๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์
๋๋ค. ๊ฒ๋ค๊ฐ ๋ช๊ฐ์ง ์ฅ์ ์ด ๋ ๋ถ์ด ์์ต๋๋ค.
- ์
์ถ๋ ฅ์คํธ๋ฆผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๊ฐ์ ๋์์.
- MSVC ์ปดํ์ผ๋ฌ์ ์์ง๊ตฌ๋ ํ ๊ฒฝ๊ณ ๋ฉ์์ง๋ฅผ ๋ง์ ์ ์๋ค (
~cpp _msvc_warnings_off.h
๊ฐ ์ค๋น๋์ด ์์)
.png)
4. ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ์ ๋๊ธฐ ¶
- STLport ํจํค์ง์ ์์ถ ํ์ผ์ ๋ฐ์ต๋๋ค. ํ์ฌ์ ์ต์ ์์ ํ ๋ฆด๋ฆฌ์ฆ๋ 4.6.2 (STLport-4.6.2.tar.gz)์
๋๋ค.
์ ๋ ์์ ๋ฒ์ ์ธ 4.5.3์ ๊ทธ๋๋ก ์ฌ์ฉํ๊ธฐ๋ก ํ์ต๋๋ค. (๋น๋ ๋ฐ ์ฌ์ฉ๋ฐฉ๋ฒ์ ์ฐจ์ด๊ฐ ์์ต๋๋ค)
- ๋ง๋งํด ๋ณด์ด๋ ๋๋ ํ ๋ฆฌ์ ์์ถ์ ํ๋๋ค.(์ฐธ๊ณ ๋ก, ์ Visual Studio๋ D:\Programming Files2 ์ ์์ต๋๋ค)
- ์์๋๋ก ๊ฐ๋จํ ๋๋ ํ ๋ฆฌ ์ค๋ช
์ ๋๋ฆฌ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์ผ๋จ ํ์ด๋ง ๋ณด์์ฃ .
- doc : ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น ๋์๋ง ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ ํผ๋ฐ์ค๊ฐ ๋ค์ด ์๋ ๋๋ ํ ๋ฆฌ.
- etc : ๋ง ๊ทธ๋๋ก ๊ธฐํ ์ก๋ค๊ตฌ๋ฆฌํ ํ์ผ๋ค์ด ์๋ ๋๋ ํ ๋ฆฌ
- lib : ์ปดํ์ผ๋ STLport ์ฌ์ฌ์ฉ ๋ฐ์ด๋๋ฆฌ(lib, dll)๊ฐ ๋ค์ด๊ฐ๋ ๋๋ ํ ๋ฆฌ. (์ฒ์์ ์๋ค๊ฐ ๋์ค์ ์๊ธธ๊ฒ๋๋ค.)
- src: ์ฌ์ฌ์ฉ ๋ฐ์ด๋๋ฆฌ๋ฅผ ๋น๋ํ๊ธฐ ์ํ ํ๋ซํผ ๋ณ ํ๋ก์ ํธ ํ์ผ์ด ์๋ ๋๋ ํ ๋ฆฌ. (์ฃผ์: vc6.mak ํ์ผ์ด ์๋์ง ํ์ธํด ๋ณด์ธ์. ๋น๋์ ์ค์ํฉ๋๋ค)
- stlport : STL ํค๋์ ๋ฐ์ด๋๋ฆฌ ์์ค๊ฐ ๋ค์ด ์๋ ๋๋ ํ ๋ฆฌ. STLport ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ชธํต์
๋๋ค.
- test : STLport๊ฐ ์ค์น๋ ํ ์ ๋๋ก ์ค์น๋์๋ ํ์ธํ๊ธฐ ์ํ ํ
์คํธ ํ๋ก๊ทธ๋จ ์์ค.
- doc : ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น ๋์๋ง ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ ํผ๋ฐ์ค๊ฐ ๋ค์ด ์๋ ๋๋ ํ ๋ฆฌ.
5. ์ ์ถ๋ ฅ์คํธ๋ฆผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ปดํ์ผํ๊ธฐ ¶
STLport ๋ฒ์ ์ ์
์ถ๋ ฅ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ง๋๋ ๊ณผ์ ์
๋๋ค.์๋ ค์ง ๋ฐ์ ์ํ๋ฉด, VC++์ ๋ค์ด ์๋ ๊ธฐ๋ณธ(stock) ์
์ถ๋ ฅ์คํธ๋ฆผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ณด๋ค ์ด๊ฒ์ด ๋ ์ฑ๋ฅ์ด ์ข๊ณ ์์ ์ ์ด๋ผ๊ณ ํ์ง์.
- Visual C++๋ฅผ ์ด๊ณ , File > Open ๋ฉ๋ด๋ก src\vc6.mak ๋ฉ์ดํฌํ์ผ์ ์ฝ์ด ๋ค์
๋๋ค.
- ๋ฉ์ดํฌ ํ์ผ์ ์ฝ์ผ๋ฉด, ์๋์ ๊ฐ์ ๋ํ ์์๊ฐ ๋์ "ํ๋ก์ ํธ๋ฅผ ๋ง๋ค๊ฒ ๋๊ณ ๋ฌผ์ด ๋ณด๋๋ฐ, ๋น์ฐํ ์ ํ์๊ณ , ์ ๋นํ ์ด๋ฆ(์: STLP_vc6)์ ์ง์ฃ . ํ๋ก์ ํธ ํ์ผ์ธ .dsp์ .dsw๊ฐ ๋ง๋ค์ด ์ง๋ฉด์ ์ฌ์ฌ์ฉ ๋ฐ์ด๋๋ฆฌ๋ฅผ ๋น๋ํ ์ ์๊ฒ ๋ฉ๋๋ค.
- ๋ฉ์ดํฌ ํ์ผ์ ์ฝ์ผ๋ฉด, ์๋์ ๊ฐ์ ๋ํ ์์๊ฐ ๋์ "ํ๋ก์ ํธ๋ฅผ ๋ง๋ค๊ฒ ๋๊ณ ๋ฌผ์ด ๋ณด๋๋ฐ, ๋น์ฐํ ์ ํ์๊ณ , ์ ๋นํ ์ด๋ฆ(์: STLP_vc6)์ ์ง์ฃ . ํ๋ก์ ํธ ํ์ผ์ธ .dsp์ .dsw๊ฐ ๋ง๋ค์ด ์ง๋ฉด์ ์ฌ์ฌ์ฉ ๋ฐ์ด๋๋ฆฌ๋ฅผ ๋น๋ํ ์ ์๊ฒ ๋ฉ๋๋ค.
- ์ฌ์ฌ์ฉ ๋ฐ์ด๋๋ฆฌ๋ STLport ํจํค์ง์ ์๋ ํ์ค C++ ํค๋๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋๋๋ฏ๋ก, VC++์ด ์ด ํค๋๋ฅผ ๊ฐ์ฅ ๋จผ์ ์ฐธ์กฐํ ์ ์๋๋ก ํด์ผ ํฉ๋๋ค. ๋ฐ๋ผ์ ์ด ์ง์ ํด ์ค์๋ค.
- ์ด์ Rebuild All์ ํ์๋ ์ง ํด์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋น๋๋ก ๋ค์ด ๊ฐ๋๋ค,
์ด๋, stlport\new ํค๋ ํ์ผ์ 2์ค์์ ์๋ฌ๋ฅผ ์ผ์ผํค๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ฐ์, ๋ค์์คํ์ด์ค std::๋ฅผ ๋ถ์ฌ ์ฃผ๋๋ก ํฉ์๋ค. (์๋์ ๊ทธ๋ฆผ์์ if ๋ค์์ 2์ค์ ๋๋ค)
- ์ด์ ๋ค์ ๋น๋ํฉ๋๋ค( - -; ). ์์คํ
์ ๋ฐ๋ผ ์ฐจ์ด๋ ์์ ์ ์์ผ๋ 1์๊ฐ ์ ๋ ๊ฑธ๋ฆฝ๋๋ค.๋ค์ ๊ทธ๋ฆผ์ ๋น๋๊ฐ ๋๋ ์ํ์ output ์๋์ฐ์
๋๋ค.
- ๋น๋ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ธํฉ๋๋ค. ๋ณ๋ค๋ฅธ ์กฐ์ ์ ํด ์ฃผ์ง ์์๋ค๋ฉด ์๋์ ๊ฐ์ด lib ๋๋ ํ ๋ฆฌ์ ํจ๊ป ๋ง๋ค์ด์ง ๊ฒ์
๋๋ค.
- ๊ธฐ๋ณธ์ ์ผ๋ก ๋ง๋ค์ด์ง๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ด 6๊ฐ์
๋๋ค. ์ด์ค "stldebug"๋ ๋ฌธ์์ด์ด ๋ค์ด ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ STLport ์ ์ฉ์ ๋๋ฒ๊ทธ ๊ธฐ๋ฅ์ด ํจ๊ป ๋ค์ด ์๋ ๋ฒ์ ์
๋๋ค. ์ฌ์ฉ๋ฐฉ๋ฒ์ ์๋์ "๋๋ฒ๊ทธ ๊ธฐ๋ฅ ์ฌ์ฉํ๊ธฐ"์์ ๋ณด์ญ์์ค.
- DLL์ debug/(release)์ 2๊ฐ์
๋๋ค.
- LIB์ debug/(release), debug_static/(release)_static์ 4๊ฐ์
๋๋ค.
- DLL์ debug/(release)์ 2๊ฐ์
๋๋ค.
- ๊ธฐ๋ณธ์ ์ผ๋ก ๋ง๋ค์ด์ง๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ด 6๊ฐ์
๋๋ค. ์ด์ค "stldebug"๋ ๋ฌธ์์ด์ด ๋ค์ด ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ STLport ์ ์ฉ์ ๋๋ฒ๊ทธ ๊ธฐ๋ฅ์ด ํจ๊ป ๋ค์ด ์๋ ๋ฒ์ ์
๋๋ค. ์ฌ์ฉ๋ฐฉ๋ฒ์ ์๋์ "๋๋ฒ๊ทธ ๊ธฐ๋ฅ ์ฌ์ฉํ๊ธฐ"์์ ๋ณด์ญ์์ค.
5.1.
์
์ถ๋ ฅ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋น๋ํ์ง ์์ ๋ถ๋ค์? ¶
์ด ์ ์ ์ค๋ช
๊ณผ ์ดํ์ ์ค๋ช
์ ๋ชจ๋ ๊ฑด๋ ๋ฐ์๊ณ , stlport ํด๋ ์ ์ฒด๋ฅผ VC++ ํด๋์ /include ํด๋์ ๋ณต์ฌํ์ญ์์ค. ๊ทธ๋ฆฌ๊ณ "ํ๋ก๊ทธ๋จ ๊ด๋ จ ์ธํ
" ์ ๋ถํฐ ์ฝ์ผ์๋ฉด ๋ฉ๋๋ค. ๋จ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ด๋ จ ๋ถ๋ถ์ ๊ด๋ จ์ด ์์ต๋๋ค.
6. STLport ์์ ํ ์ค์นํ๊ธฐ ¶
๋ง๋ค์ด์ง STLport์ ์ฌ์ฌ์ฉ ๋ฐ์ด๋๋ฆฌ์ ํ์ค ํค๋๋ฅผ ๋น์ฃผ์ผ ์คํ๋์ค์์ ์ธ ์ ์๋๋ก ํด์ฃผ๋ ๊ณผ์ ์
๋๋ค.
- DOS ์ฐฝ์ ์ด๊ณ , STLport ํจํค์ง๊ฐ ํ๋ฆฐ ์์น๋ฅผ ๊ธฐ์ค์ผ๋ก src ๋๋ ํ ๋ฆฌ(์์์ ํ์ธํ์
จ์ฃ ?)๋ฅผ ์ฐพ์ ๊ฐ๋๋ค.
~cpp E:\STLport-4.5.3\src\
- ๋์ค ํ๋กฌํํธ์์ nmake install์ ์
๋ ฅํฉ๋๋ค.
~cpp E:\STLport-4.5.3\src\nmake -f vc6.mak install
- ์์คํ
์ด ์๊ณ ์๋ ๋น์ฃผ์ผ ์คํ๋์ค์ ์ธํด๋ฃจ๋ ํจ์ค์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํจ์ค์ STLport ํค๋์ ๋ฐ์ด๋๋ฆฌ๊ฐ ๋ณต์ฌ๋ ๊ฒ๋๋ค.
- ์์คํ
์ด ์๊ณ ์๋ ๋น์ฃผ์ผ ์คํ๋์ค์ ์ธํด๋ฃจ๋ ํจ์ค์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํจ์ค์ STLport ํค๋์ ๋ฐ์ด๋๋ฆฌ๊ฐ ๋ณต์ฌ๋ ๊ฒ๋๋ค.
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"๊ฐ ์ถ๊ฐ๋ฉ๋๋ค.
- 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"๊ฐ ์ถ๊ฐ๋ฉ๋๋ค.
- ์ญ์ ๋ง์ฐฌ๊ฐ์ง๋ก, Debug ๋ฒ์ ์ ๊ฒฝ์ฐ์ ๊ฐ ๋ฐํ์Lib ํญ๋ชฉ์ "Debug"๋ ๋ฌธ์์ด์ด ๋ถ๊ณ , ๊ฐ ์ด๋ฆ์ .LIB์์ "D"๊ฐ ๋ถ๊ณ , ๊ฐ ํ๊ฒฝ๋ณ์์ "_DEBUG"๊ฐ ์ถ๊ฐ๋ฉ๋๋ค.
- 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>์ผ๋ก ๋ง์ถ ๋ค์๋
์ด์ธ์๋, ๊ธฐ๋ณธ ๋ฐํ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ด๋ จ๋ ๋ด์ฉ์ URL์ ์ฒจ๋ถํ๋, ์ฐธ๊ณ ํ์๊ธฐ ๋ฐ๋๋๋ค.
~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.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