์์ :)
https://github.com/eazuooz/YamYamEngine
GitHub - eazuooz/YamYamEngine
Contribute to eazuooz/YamYamEngine development by creating an account on GitHub.
github.com
ํ๋ก์ ํธ ๊ตฌ์ฑ
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋?
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ(์์ด: library)๋ ์ํํธ์จ์ด๋ฅผ ๋ง๋ค ๋ ์ฐ์ด๋ ํด๋์ค๋ ์๋ธ๋ฃจํด๋ค์ ๋ชจ์์ ๊ฐ๋ฆฌํค๋ ๋ง์ด๋ค.
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ(library)๋ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ๋ค๊ณผ ๋งํฌ๋๊ธฐ ์ํ์ฌ ์กด์ฌํ๋, ํ๋ ์ด์์ ์๋ธ๋ฃจํด(subroutine)์ด๋ ํจ์(function)๋ค์ ์งํฉ ํ์ผ์ด๋ค.
- ๋งํฌ(link)๋ ์ ์๋๋ก ๋ณดํต ์ปดํ์ผ๋ ํํ์ธ ๋ชฉ์ ์ฝ๋(object code)ํํ๋ก ์กด์ฌํ๋ค.
- ๋ฏธ๋ฆฌ ์ปดํ์ผ ๋์ด ์์ด์ ์ปดํ์ผ ์๊ฐ๋ ๋จ์ถ๋๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ ๋ชฉ์
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ฝ๋ ์ฌ์ฌ์ฉ์ ์ํด ์กฐ์งํ๋ ์ด์ฐฝ๊ธฐ ๋ฐฉ๋ฒ ์ค์ ํ๋์ด๋ฉฐ
๋ง์ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ๋ค์์ ์ฌ์ฉํ ์ ์๋๋ก ์ด์์ฒด๊ณ๋ ์ํํธ์จ์ด ๊ฐ๋ฐ ํ๊ฒฝ์ ๊ณต์๋ค์ ์ํด ์ ๊ณต๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. - ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ด์ ์๋ ๋ฃจํด๋ค์ ๋ฒ์ฉ์ ์ผ๋ก ์ฌ์ฉ๋ ๊ฐ๋ฅํ๋ฉฐ
3์ฐจ์ ์ ๋๋ฉ์ด์ ๊ทธ๋ํฝ ๋ฑ๊ณผ ๊ฐ์ด ํน๋ณํ ์ฉ๋์ ํจ์๋ก ์ค๊ณ ๋ ์๋ ์๋ค. - ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ์ฌ์ฉ์์ ํ๋ก๊ทธ๋จ๊ณผ ๋งํฌ๋์ด ์คํ์ด ๊ฐ๋ฅํ ์์ ํ ํ๋ก๊ทธ๋จ์ ์ด๋ฃฌ๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ตฌ๋ถ
- ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ : ์์ฑ๋ ํ๋ก๊ทธ๋จ์ ์คํํ ๋ ํฌํจ์ํค๋ ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- ์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ : ํ๋ก๊ทธ๋จ์ ์ปดํ์ผํ๋ ๊ณผ์ ์์ ํฌํจ์ํค๋ ์ค๋ธ์ ํธ ํ์ผ๋ค์ ๋ชจ์
ํ์ฅ์๋ณ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ตฌ๋ถ
- .a : ๋ฆฌ๋ ์ค / ์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- .so : ๋ฆฌ๋ ์ค / ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- .lib : ์๋์ฐ / ์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- .dll : ์๋์ฐ / ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(Dynamin Library)
- DLL์ ๊ตฌํํ๊ณ ์ปดํ์ผํ๊ณ ๋๋ฉด Static library์๋ ๋ค๋ฅด๊ฒ output file์ด 2๊ฐ๊ฐ ์์ฑ๋๋ค.
- ํ๋๋ *.lib ํ์ผ์ด๊ณ
ํ๋๋ *.dll ํ์ผ์ด๋ค. - ์ฌ๊ธฐ์ *.lib ํ์ผ์ Static library์ *.lib ํ์ผ๊ณผ๋ ์ ํ ๋ค๋ฅด๋ค.
- Static library์ *.lib ํ์ผ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ์ฒด ์ฝ๋๋ฅผ ํฌํจํ๋ ๋ฐ์ด๋๋ฆฌ์ด๋ฉฐ,
DLL์ *.lib ํ์ผ์ DLL์ด ์ ๊ณตํ๊ณ ์ ํ๋ ํจ์ ์ ๋ณด(ํจ์๋ช )์ ๊ฐ์ง๋ ์ ๋ณด ํ์ผ์ด๋ค. - ํ๋ก๊ทธ๋จ ์์ํ ๋ ๊ฐ์ด ๋ก๋ฉ๋์ด
ํ๋ก๊ทธ๋จ ์ข ๋ฃ ํ ๋ ๋ฉ๋ชจ๋ฆฌ์์ ํด์ ๋๋ ๋ฐฉ๋ฒ์
์์์ ๋งํน(Implicit Linking)์ด๋ผ ํ๋ค. - DLL์ *.lib ํ์ผ์ ์ด์ฉํ์ฌ ๋งํนํ๋ ๊ฒ์ ์์์ ๋งํน(implicit linking)์ด๋ผ๊ณ ํ๋ค.
- ํ๋ก๊ทธ๋จ ์คํ ์ ํ์์๋ง ์ธ๋ถ DLL ํ์ผ์์ ํจ์๋ฅผ ์ฐธ์กฐํ๋ค.
- ์คํ ๋ฐ์ด๋๋ฆฌ๋ฅผ ๋งํฌ ๋จ๊ณ์์ ์คํ ๋ฐ์ด๋๋ฆฌ์ *.obj ํ์ผ๋ค๊ณผ DLL์ *.lib ํ์ผ์ ํจ๊ป ๋งํฌํ์ฌ
์ด ์ ๋ณด๋ฅผ ํ ๋๋ก runtime์ DLL์ ํจ์ ์ฝ๋๋ฅผ ์ฐธ์กฐํ๊ฒ ๋๋ ๊ฒ์ด๋ค. - ์ฆ *.lib ํ์ผ์ ๋งํฌ์ ํ์ํ๊ณ , *.dll ํ์ผ์ ์คํ์ ํ์ํ๋ค.
์ฅ์
- ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ์ฝํ๊ณ ์ค์ํ์ ์ค์ธ๋ค.
- ํ๋ก๊ทธ๋จ์ด ํ๋ฒ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ ค์ง ๊ฒ์ ๊ณต์ ํ๋ฏ๋ก ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ ๊ณต๊ฐ์ด ์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋นํด ์ ๋ค.
- ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์๋ ํ๋์ DLL ๋ณต์ฌ๋ณธ์ ๊ณต์ ํ์ฌ ํ๋์ DLL์ ๋์์ ์ฌ์ฉํ ์ ์๋ค.
- ๋ฐ๋ฉด, ์ ์ ์ฐ๊ฒฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋๋ ์์ฉ ํ๋ก๊ทธ๋จ์ ๊ฒฝ์ฐ Windows๋ ๊ฐ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ํด ํ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฝ๋ ๋ณต์ฌ๋ณธ์ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋ํด์ผ ํ๋ค.
- ๋์ ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์์๋ DLL์ ์ฐธ์กฐํ์ฌ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ 1๊ฐ๋ง ์์ผ๋ฉด ๋์ง๋ง
์ ์ ์ ๋น๋ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํจ๊ป ์ปดํ์ผ์ด ์ด๋ค์ ธ์ผํ๊ธฐ ๋๋ฌธ์ ๊ฐ ํ๋ก๊ทธ๋จ๋ง๋ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฝ๋๋ฅผ ๊ฐ๊ณ ์๋๋ค. - DLL์ ๋ณด๋ค ์ฝ๊ฒ ์ ๊ทธ๋ ์ด๋ ํ ์ ์๋ค.
- DLL์ ํจ์๊ฐ ๋ณ๊ฒฝ๋์ด๋ ์ด ํจ์์ ์ธ์ ๋ฐ ๋ฐํ ๊ฐ์ด ๋ณ๊ฒฝ๋์ง ์์์ผ๋ฉด ๊ทธ ํจ์๋ฅผ ์ฌ์ฉํ๋ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ค์ ์ปดํ์ผํ๊ฑฐ๋ ๋งํฌํ ํ์๊ฐ ์๋ค.
- ๋ฐ๋ฉด, ์ ์ ์ผ๋ก ๋งํฌ๋๋ ๊ฐ์ฒด ์ฝ๋์ ๊ฒฝ์ฐ์๋ ํจ์๊ฐ ๋ณ๊ฒฝ๋๋ฉด ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ค์ ๋งํฌ์์ผ์ผ ํ๋ค.
- ์ถ์ ํ ์ง์์ด ๊ฐ๋ฅํ๋ค.
์๋ฅผ ๋ค์ด, ์์ฉ ํ๋ก๊ทธ๋จ์ ์ถ์ํ ๋ ์ฌ์ฉํ ์ ์์๋ ๋์คํ๋ ์ด ๊ธฐ๋ฅ์ ์ง์ํ๋๋ก ๋์คํ๋ ์ด ๋๋ผ์ด๋ฒ DLL์ ์์ ํ ์ ์๋ค. - ์ธ์ด ํ์์ด ๋ค๋ฅธ ์ฌ๋ฌ ํ๋ก๊ทธ๋จ์ ์ง์ํ๋ค.
- ์๋ก ๋ค๋ฅธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ์์ฑ๋ ํ๋ก๊ทธ๋จ์ธ ๊ฒฝ์ฐ์๋ ํจ์์ ํธ์ถ ๊ท์น์ ๋ฐ๋ฅด๊ธฐ๋ง ํ๋ฉด ์ฌ๋ฌ ํ๋ก๊ทธ๋จ์์ ๋์ผํ DLL ํจ์๋ฅผ ํธ์ถ ํ ์ ์๋ค.
- ์ด ๊ฒฝ์ฐ ๊ฐ ํ๋ก๊ทธ๋จ๊ณผ DLL ํจ์๋ ์ฌ๋ฌ ๊ฐ์ง ๋ฉด(์คํ์ ํด๋น ํจ์์ ์ธ์๊ฐ ๋ค์ด๊ฐ๋ ์์, ์คํ์ ์ ๋ฆฌํ๋ ๊ฒ์ด ํจ์์ธ์ง ์์ฉ ํ๋ก๊ทธ๋จ์ธ์ง์ ์ฌ๋ถ ๋ฐ ์ธ์๊ฐ ๋ ์ง์คํฐ์ ์ ๋ฌ๋๋์ง์ ์ฌ๋ถ)์์ ํธํ ๋ ์ ์์ด์ผ ํ๋ค.
- ํ๋ก๊ทธ๋จ ๋ณ๊ฒฝ์ ๋ณ๊ฒฝ๋ ๋ถ๋ถ์ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ง ์ฌ๋ฐฐํฌํ๋ฉด ๋๋ฏ๋ก ์ ์ง๋ณด์๊ฐ ์ฝ๋ค.
๋จ์
- ์ธ๋ถ ์์กด๋๊ฐ ์๊ธฐ๊ธฐ ๋๋ฌธ์ ์ด์์ฑ์ด ์ด๋ ต๋ค.
- ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฌ๋ ค๋ฉด ์ฐพ๊ณ ์ฌ๋ฆฌ๋๋ฐ ์๊ฐ์ด ๊ฑธ๋ฆฌ๋ฏ๋ก ์ฑ๋ฅ์ ํ๊ฐ ์๊ธด๋ค.
์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(Static Libray)
- ํ๋ก๊ทธ๋จ ๋น๋ ์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ ๊ณตํ๋ ์ฝ๋๋ฅผ ์คํ ํ์ผ์ ๋ฃ๋ ๋ฐฉ์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์๋ฏธํ๋ค.
- ์ปดํ์ผ์ ๋งํน ๋จ๊ณ์์ ์คํ ํ์ผ์ ๊ฒฐํฉ๋๋ค.
- ํน์ ๊ธฐ๋ฅ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ static ํ๊ฒ ์ ์ํ๋ค๋ ๊ฒ์ ์ปดํ์ผ์ link ๋จ๊ณ์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(*.lib ํ์ผ)๋ฅผ ์คํ ๋ฐ์ด๋๋ฆฌ์ ํฌํจ์ํจ๋ค๋ ์๊ธฐ์ด๋ค.
- ์ฆ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋์ ์ฝ๋๊ฐ ์ด๋ฅผ ์ฌ์ฉํ๋ ์คํ ๋ฐ์ด๋๋ฆฌ ์์ ํฌํจ๋๊ธฐ ๋๋ฌธ์ ๋ณ๋์ ์ถ๊ฐ ์์ ์์ด, ๊ทธ๋ฆฌ๊ณ ๋ ๋ฆฝ์ ์ผ๋ก ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํจ์๋ค์ ์ฌ์ฉํ ์ ์๋ค.
- ์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ปดํ์ผ์ ํ๋ฉด ๋ง์ปค๊ฐ ํ๋ก๊ทธ๋จ์ด ํ์๋ก ํ๋ ๋ถ๋ถ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ฐพ์ ์คํํ์ผ์ ๋ฐ๋ก ๋ณต์ฌํ๋ค.
- ์คํ ํ์ผ์ ๋ค ๋ค์ด๊ฐ๊ธฐ ๋๋ฌธ์ ์คํ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํ์์๋ค.
์ฅ์
- ์์คํ ํ๊ฒฝ์ด ๋ณํด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋ฌด๋ฐ ์ํฅ์ด ์๊ณ , ์์ฑ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.
- ์ปดํ์ผ์ ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ๋ก๊ทธ๋จ ๋ด์ ์ ์ฌํ๊ธฐ ๋๋ฌธ์ ์ด์์ฑ์ด ์ข๋ค.
- ๋ฐํ์์ ์ธ๋ถ๋ฅผ ์ฐธ์กฐํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ์๋์์ ์ฅ์ ์ด ์๋ค.
๋จ์
- ๊ฐ์ ์ฝ๋๋ฅผ ๊ฐ์ง ์ฌ๋ฌ ํ๋ก๊ทธ๋จ์ ์คํํ ๊ฒฝ์ฐ ์ฝ๋๊ฐ ์ค๋ณต์ด ๋๋ ๊ทธ๋งํผ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ญ๋นํ๊ฒ ๋๋ค.
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ณ๊ฒฝ์ด ํ์ํ ์, ๋ณ๊ฒฝ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ง ์ฌ๋ฐฐํฌํ๋ฉด ์๋๊ณ ํ๋ก๊ทธ๋จ์ ๋ค์ ์ฌ๋ฐฐํฌ ํด์ผ ํ๋ค.
'๐ Development Study > ๐ผ GameProgramming 2D' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Mesh, MeshRenderer (0) | 2022.12.21 |
---|---|
Constant Buffer(์์ ๋ฒํผ), Index Buffer(์ธ๋ฑ์ค ๋ฒํผ) (1) | 2022.12.08 |
Drawing a Triangle (0) | 2022.12.06 |
DirectX11 Initilize (0) | 2022.11.29 |
๋ ๋๋ง ํ์ดํ๋ผ์ธ DirectX11 (2) | 2022.11.29 |
๋๊ธ