๋ชฉ์ฐจ
- ๊ธ์ ์ฐ๋ ์ด์
- ์ปดํ์ผ์ด๋
- DLL์ด๋
- Dynamic-Link๋
- Static-Link๋
- Static-Link ์ต์ ์ผ๋ก ์ปดํ์ผ ํ๋ ๋ฐฉ๋ฒ
๋ฐ๋๋ฐ๋ํ ์ด์ ์ ์ผ์ด๋ค. ์ด๋ค ํ๋ก๊ทธ๋จ์ ์กฐ์ํ๊ธฐ ์ํ ํ์ผ(๋ง์ด ๊ฑฐ์ฐฝํ์ง ์ฌ์ค์ ๋งคํฌ๋ก๋ค.)์ ๋น๋ํ๊ณ ๋ค๋ฅธ ์ปดํจํฐ์ ์ฎ๊ฒผ๋๋, ํน์ dll์ด ์๋ค๊ณ ์ค๋ฅ๋ฅผ ๋ฑ์ด๋ด๋ ๋ฐ๋์ ์ฒ์ฐธํ ์คํจํ๋ค. ๊ฒฐ๊ตญ ๊ณ ์น๊ธด ํ์ง๋ง ๋ฆ์์ผ๋... ์ด๊ฑธ ์ฐพ์๋ณด๋ ๋น์ ๋ค๋ ๋์ ๊ฐ์ ๋ํญ์ ๊ฒช์ง ์์์ผ๋ฉด ํด์ ์ด๋ ๊ฒ ์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ปดํ์ผ์ ๊ดํด ์ ๋ฆฌํ๋ค.
๋ฐฉ๋ฒ๋ก ์ ์์์ ์ปดํ์ผ๊ณผ ๋งํฌ ๋ฐฉ์์ ๊ดํด ๊ฐ๋จํ ์ด์ผ๊ธฐ ํ๊ณ ๋์ด๊ฐ๊ฒ ๋ค. ๋ฐ์๋ฉด ๋ฐ์ผ๋ก ๋ด๋ ค์ ๋ถ์ ๊ธ์จ๋ก ์ฐ์ธ '์ ์ ๋งํฌ ์ต์
์ผ๋ก ์ปดํ์ผ ํ๋ ๋ฒ'๋ถํฐ ๋ณด์.
์ปดํ์ผ์ด๋?
์ด ๊ธ์ ์ปดํ์ผ๊ณผ ์ปดํ์ผ๋ฌ์ ๋ํด ๊น์ด ์๊ฒ ๋ค๋ฃจ์ง ์์ผ๋ฏ๋ก, ๊ทธ๋ฅ ์ธ๊ฐ์ด ์์๋ค์ ์ ์๋ ์ธ์ด์ธ ์ฝ๋๋ฅผ ๊ธฐ๊ณ๊ฐ ์์๋ค์ ์ ์๋ ์ธ์ด์ธ ๊ธฐ๊ณ์ด๋ก ๋ณํํ๋ ๊ณผ์ ์ด๋ผ ์๊ฐํ๊ฒ ๋ค. ์กฐ๊ธ ๋ ์ ์ํด๋ณด์ด๊ฒ ๋งํ์๋ฉด ์์ค ์ฝ๋๋ฅผ 0๊ณผ 1๋ก ๊ตฌ์ฑ๋ ๋ฐ์ด๋๋ฆฌ ํ์ผ๋ก ๋ฐ๊พธ๋ ๊ณผ์ ์ด๋ผ ํ ์ ์๋ค.
DLL์ด๋?
Dynamic-Link Library์ ์ฝ์, ๋์ ๋งํฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ผ. ์ด๋ฆ์ด ๊ฑฐ์ฐฝํด๋ณด์ด๊ธด ํ์ง๋ง, ์ด dll์ ๊ทธ๋ฅ.. ๋จ์ถํค ๊ฐ์ ์ญํ ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ์ฝ๋ค. dll์ ํ๋ก๊ทธ๋จ ๊ฐ๋ฐ์ ์์ด์ ์์ฃผ ์ฐ์ด๋, ๊ธฐ์ด๊ฐ ๋๋ ํจ์๋ค์ ์ค๋ณตํด์ ๊ฐ๋ฐํ๋ ์ผ์ ํผํ๊ธฐ ์ํด(๊ทธ๋ฆฌ๊ณ ๋ฌด์๋ณด๋ค ์ ๋ถ ๊ตฌํํ๋ ค๋ฉด ์๊ฐ ์๋ชจ๊ฐ ํฌ๋ค!) dll ํ์ผ์ ๊ทธ๊ฒ๋ค์ ๋ชจ์กฐ๋ฆฌ ์ฎ๊ฒจ๋๊ณ ํ์ํ ๋๋ง๋ค ๋ถ๋ฌ ์ด๋ค ์ ๋๋ก๋ง ์๊ฐํ์. ๋์ค์ DLL์ ๋ค๋ฃจ๋ ๊ธ์ ์ธ ๋ ๋ ์์ธํ๊ฒ ๊ธฐ์ ํ๊ฒ ๋ค.
๋ญ... ์ด๋ ๊ฒ ํน์ dll์์ ํจ์๋ฅผ ๋น๋ ค์ ์ฐ๋ ํ๋ก๊ทธ๋จ์ด, ๊ทธ dll์ด ์๋ ํ๊ฒฝ์์ ์ ๋๋ก ์คํ๋ ๋ฆฌ ์๋ ๊ฑด ๊ธฐ์ ์ฌ์ค์ด๋ค. ๊ทผ๋ฐ ๋๋ ์ด๊ฑธ ์๋ฉด์๋ ๋์ ๋งํฌ ์ต์
์ ๊ฑธ๊ณ ์ปดํ์ผ์ ํด๋ฒ๋ ธ๊ณ …. ๊ทธ๋์? vs๋ฅผ ์ฌ์ฉํด ์ ์ ๋งํฌ ์ปดํ์ผ์ ํ๋ ๋ฒ์ ์จ ๋ณด๊ฒ ๋ค.
๋งํฌ ๋ฐฉ์์๋ ํฌ๊ฒ Dynamic-Link (๋์ ๋งํฌ), Static-Link (์ ์ ๋งํฌ)๊ฐ ์๋ค.
Dynamic-Link (๋์ ๋งํฌ) ๋?
Visual Studio๊ฐ ํํ default link ๋ฐฉ์. ์คํํ์ผ์ด ๋ ๋ฆฝ์ ์ผ๋ก DLL์ ์ฐธ์กฐํ๋ค. ์คํ ํ์ผ์๋ DLL ์์ฒด๊ฐ ํฌํจ๋์ง ์์ ํจ์๋ฅผ ์ด๋์ ๊ฐ์ ธ๋ค ์ธ ์ง์ ๋ํ ์ ๋ณด (์ฃผ์)๋ง ๋งํฌ๋๊ณ , ์คํ ํ์ผ์ ๊ทธ ์ ๋ณด๋ฅผ ์ด์ฉํด ํ์ํ ํจ์๋ฅผ ๊ฐ๋ค ์ด๋ค. ๊ทธ๋ฆฌํ์ฌ ์ฐธ์กฐํ๋ DLL์ด ๋ถ์ฌํ ์ปดํจํฐ ํ๊ฒฝ์์ ์คํํ๋ฉด ์๋์ ๊ฐ์ ์ค๋ฅ๋ฅผ ๋ฑ๋๋ค. ์ฐ์ฉ.. ๋ฌดํผ ์ ๋ง ํ์ํ ์ ๋ณด๋ง ๋งํฌ๋์ด์, ์คํ์ด ๋น ๋ฅด๊ณ ์ฉ๋์ด ์๋ค๋ ์ฅ์ ์ด ์กด์ฌํ๋ค.
Static-Link (์ ์ ๋งํฌ) ๋?
Linker์ ์ํด ์คํ ํ์ผ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ผ(.lib)์ด ํฌํจ๋๋ค. ์คํ ํ์ผ ์์ฒด๊ฐ ๋ชจ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ ์๊ณ ์๋ ์
์ด๋ผ, ํฌ๊ธฐ๊ฐ ํฌ๊ณ ์คํ์ด ์ข ๋๋ฆฌ๋ค๋ ๋จ์ ์ด ์๋ค. ๋์ ๋์ ๋งํฌ์ฒ๋ผ ์ปดํจํฐ ๋ด ์กด์ฌํ๋ dll ํ์ผ์ ๋ถ๋ฌ๋ค ์ฐ๋ ๊ฒ ์๋๋ผ, ์ ์ด์ ๋ฐ์ด๋๋ฆฌ ํ์ผ ๋ด์ ๋ชจ๋ ๊ฒ ๋ค ๋ค์ด์์ผ๋ฏ๋ก ๋ค๋ฅธ ํ๊ฒฝ์์ ์คํํ ๋ ๋ณ๋๋ก ํ์ํ ํ์ผ์ด ์๋ค. ์ ์ ์ปดํ์ผ์ ํ๋ฉด ์ ๋ฐ ์ค๋ฅ๋ ์ ๋ด๊ฒ ์ง....
Static-Link ์ต์ ์ผ๋ก ์ปดํ์ผ ํ๋ ๋ฐฉ๋ฒ?
[ํ๋ก์ ํธ] -> [์์ฑ] ์ ๋๋ฅด๋ฉด ํ๋ก์ ํธ ์์ฑ ํ์ด์ง๊ฐ ์ด๋ฆฐ๋ค.
์์ ๊ฐ์ ์์ฑ ํ์ด์ง์์ [C/C++] -> [์ฝ๋ ์์ฑ]์ ๋๋ฅด๋ฉด ๋ค์๊ณผ ๊ฐ์ ํ๋ฉด์ด ๋์จ๋ค.
์ด๋ debug ๋ชจ๋์ release ๋ชจ๋์ ์ค์ ๋ฐฉ๋ฒ์ด ์กฐ๊ธ ๋ฌ๋ผ์ง๋ค.
Debug mode
[๋ฐํ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ] ํญ๋ชฉ์ ๋ค์ค ์ค๋ ๋ ๋๋ฒ๊ทธ (/MTd) ๋ก ๋ณ๊ฒฝํ๋ค.
Release mode
[๋ฐํ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ] ํญ๋ชฉ์ ๋ค์ค ์ค๋ ๋ (/MT) ๋ก ๋ณ๊ฒฝํ๋ค.
์ต์ข
์ ์ผ๋ก ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ฅํด์ค ๋ค ์ปดํ์ผ ํด์ฃผ๋ฉด ์ด๋ ๊ฒ ๋ฐ๋ ์ค์ ์ ๋ฐ๋ผ static ๋ฐฉ์์ผ๋ก link๋์ด, dll์ด ์๋ ๋ค๋ฅธ ์ปดํจํฐ์์๋ ์ ์คํํ ์ ์๊ฒ ๋๋ค.