๊ฑฐ์ ๋ชจ๋ ์ด์์ฒด์ ๋ C๋ก ์์ฑ๋จ
C๋ ๋ฉ๋ชจ๋ฆฌ ์ฐ์ฐ์ด ํธ๋ฆฌํ๊ณ ์ฑ๋ฅ๋ ๊ด์ฐฎ์์ ์ฐ๊ตฌ์ฉ์ด ์๋ ์์ฉ ์ด์์ฒด์ ๋ ๊ฑฐ์ 100% C๋ก
์์ฑ๋๋ค. ๋ฌผ๋ก ๋ถ๊ฐ์ ์ธ ๊ธฐ๋ฅ๋ค์ C++ ๋ก๋ ์์ฑ๋์ง๋ง ์ฝ์ด๋ ๋ชจ๋ C๋ผ๊ณ
์๊ฐํด๋ ๋ฌด๋ฐฉํ๋ค. ์์ Mac OS๋ PASCAL๋ก ์์ฑ๋๊ธฐ๋ ํ๋๋ฐ(์ง๊ธ์ C๋ก ์ฌ์์ฑ๋จ)
PASCAL๋ ๋ฌธ๋ฒ๋ง ์กฐ๊ธ ๋ค๋ฅผ๋ฟ ๊ฑฐ์ C์ ๊ฐ๋ค๊ณ ๋ณด๋ฉด๋๋ค.
FFI (foreign function interface)
FFI ๋ ์ด๋ค ์ธ์ด A ์์ ๋ค๋ฅธ ์ธ์ด B๋ฅผ ํธ์ถํ ์ ์๊ฒ ์ธ์ด์์ ์ ๊ณตํ๋ ์ธํฐํ์ด์ค์ธ๋ฐ
ํ์ค์ ์ผ๋ก ๋๋ถ๋ถ B๊ฐ C์ธ์ด๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ํ๊ณ ์ด๊ฒ์ ์ธ์ด ์์กด์ ํ์ ์ ์ธ๊ฒ์ด๋ค.
์๋ก์ด ์ธ์ด๊ฐ ๋ง๋ค์ด์ง๋ฉด ์ฐ์ ์ ์ผ๋ก ๊ฐ์ฅ ๋จผ์ ์์ ๋๋ ๊ฒ์ด C์ฝ๋๋ฅผ ํธ์ถํ ์ ์๋๋ก
์ธ์ด์์ ์ง์ํ๋ ์์ ์ด๋ค. ์ด์ ๋ ํ๋ก๊ทธ๋จ์ด๋ ์ ๋ ฅ์ ๋ฐ์ ๊ณ์ฐํ๊ณ ์ถ๋ ฅ์ ํ๋ ๊ฒ์ด๊ณ
(๊ฒ์๋ ์ ์ ์ ํค๋ณด๋๋ ๋ง์ฐ์ค ์ ๋ ฅ์ ๋ฐ์ ๋น๋์ค๋ฉ๋ชจ๋ฆฌ๋ก ์ถ๋ ฅํ๋๊ฒ)
์ด๋ฌํ ์ ์ถ๋ ฅ์ด ๋ชจ๋ ์ด์์ฒด์ ๊ฐ ์ ๊ณตํ๋ ํจ์๋ฅผ ํตํด ์ด๋ฃจ์ด์ ธ์ผ ํ๋๋ฐ
์ด๋ค ํจ์๊ฐ ๋ชจ๋ C๋ก ์์ฑ๋์๊ธฐ ๋๋ฌธ์ ์ซ๋ ์ข๋ ์๋ก์ด ์ธ์ด๋ ๋ฌด์กฐ๊ฑด C ์ฝ๋๋ก ์์ฑ๋ ๋ชจ๋์
ํธ์ถํ ์ ์์ด์ผ ํ๋ค.
์ ํ์ ๊ฒฝ์๋ ฅ
์ ํ์ ๊ฒฝ์๋ ฅ์ ์ ํ์ ํ์ง๋ ์ค์ํ์ง๋ง ๋ง์ ๊ฒฝ์ฐ ํ์ด๋ฐ์ด ๋งค์ฐ ์ค์ํ๋ค. ์ฐ์ ์์ฅ์ ๋จผ์ ๋นจ๋ฆฌ
๋ด๋์ ์ ์ ํ๋ ๊ฒ์ด ์ค์ํ๊ธฐ ๋๋ฌธ์ด๋ค. ๊ฐ๋ น ์๋์ฐ์์ ๊ฒ์๊ฐ๋ฐ์ ์์ฒญ๋๊ฒ ํจ๊ณผ์ ์ธ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ค๊ณ
๊ฐ์ ํ์. C๋ฅผ ๋ชจ๋ฅด๋ ๊ฐ๋ฐ์๋ค์ ์ด๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ธฐ ์ํด ์ ๋ํฐ๊ฐ์ ์์ง์ด ์ด๊ธฐ๋ฅ์ ์ง์ํ๊ธฐ๋ฅผ ๊ธฐ๋ค๋ ค์ผํ๋ค.
๋ง์ฝ ๋ด๊ฐ C์ธ์ด๋ฅผ ์ดํดํ๊ณ ์๋ค๋ฉด (C๋ก ๋ณต์กํ ๋ก์ง์ ๋น ๋ฅด๊ฒ ๊ฐ๋ฐํ ์ ์๋ ์ญ๋ ๊น์ง๋ ํ์์๋ค)
์ด๊ธฐ๋ฅ(ํจ์)์ ์๋ฐ๋ C#์์ ์ง์ ํธ์ถํ ์ ์๊ณ ๋จ๋ค๋ณด๋ค ๋น ๋ฅด๊ฒ ์ ํ์ ์ถ์ ํ ์ ์๋ค.
๋ ๋ค๋ฅธ ์๋ก ์ผ๋ณธ์์ ์ด๋ง์ด๋งํ๊ฒ ๋์ ํฌ์ํด์ ์๋ก์ด ์ฐจ์ธ๋ ๊ฒ์๊ธฐ๋ฅผ ๊ฐ๋ฐํ๊ณ ๊ฐ๋ฐ์์๊ฒ ์์ฒญํ ํํ์
์ฃผ๋ฉด์ ๊ฐ๋ฐ์ ์ฅ๋ คํ๋๋ฐ ์ ๋ํฐ๊ฐ ์์ง ์ด ๊ฒ์๊ธฐ๋ฅผ ์ง์์ ๋ชปํ๊ณ ์๋ค๊ณ ๊ฐ์ ํ์. ์ด๋ฐ๊ฒฝ์ฐ C๋ฅผ ์ดํดํ๋
๊ฐ๋ฐ์๋ ์ง์ ์ ๋ํฐ ๋น๋ํ๊ฒฝ์ ๊ตฌ์ถํด์ ์ ํ์ถ์๋ฅผ ํ ์ ์๋ค.
์์ดํฐ ์ด๊ธฐ์ ๋ง์ ๊ฒ์๋ค์ด SDL + C/C++ ๋ก ์์ฑ๋์๊ณ ์ด๊ธฐ ์์ฅ ๊ณต๋ต์ผ๋ก ๋์ ๋ง์ด ๋ฒ๊ฒ์ ๋๊ตฌ๋ ์๋ ์ฌ์ค์ด๋ค.
์ ๋ํฐ๋ก ๊ฒ์ ๊ฐ๋ฐ์ ํ ๊ฑด๋ฐ C ๋ฅผ ์์์ผ ํ๋๊ฐ?
์๋๋ค. ๊ทธ๋ฐ๋ฐ ์๋ฉด ์ข๋ค. ์๋ฉด ์์์ ์ธ๊ธํ๊ฒ์ฒ๋ผ ๊ฐ๋ฐํญ์ด ๋์ด ์ง๋ค. ๋ง์น ๋์ ๋ฒ๊ธฐ ์ํด ์์ด๊ฐ ํ์๋ ์๋์ง๋ง
์์ด๋ฅผ ํ ์ค ์๋ฉด ํ๋ ํญ์ด ๋์ด ์ง๋ค. ๊ทธ๋ฆฌ๊ณ ๊ธฐ์ ์ต๋์ ์ ๋ฆฌํ๋ค. ์ด์์ ์ผ๋ก๋ C# ๊ฐ์ ๊ณ ๊ธ์ธ์ด๋ฅผ ์ฌ์ฉํ๋ฉด
๋ก์ฐ ๋ ๋ฒจ์ ์๋ชฐ๋ผ๋ ๋ ๊ฑฐ ๊ฐ์ง๋ง ๊ทธ๊ฒ์ ์ด์์ ์ธ ๊ฒ์ด๊ณ ๋ชจ๋ ํ๊ฒฝ์ด ํญ์ ์ด์์ ์ธ ์ํ๋ก ์ ์ง๋๋๊ฒ์ ์๋๋ค.
๊ธฐ์ ์์ ๋ง ๋ด๋ ๊ทธ๋ ๋ค. ํญ์ ๋ด ์์ค์ ์ ํฉํ ๊ธฐ์ ์์ ์ด ์ถํ๋๋๊ฐ? ๊ทธ๋ฆฌ๊ณ ๋ฒ์ญ๋ณธ์ ๋ณด๋ฉด ๋๋๋ฐ ์ ์ฐ๋ฆฌ๋ ์์๋ฅผ ์ฝ๊ธฐ ์ํด
์์ด๋ฅผ ๊ณต๋ถํ๋? ๊ทธ ์ด์ ๋ ํ์ํ ์์ ์ด ํญ์ ๋ฒ์ญ๋์ ์ถํ๋์ง ์๊ธฐ ๋๋ฌธ์ด๋ค.
๋น์ทํ๊ฒ ๋ก์ฐ ๋ ๋ฒจ์ ์ด๋์ ๋ ์ดํดํ๋ฉด ์๋ก์ด ๊ธฐ์ ์ต๋์ด๋ ๊ฐ๋ฐ ๋ฆฌ์์ค๋ฅผ ํ์ฉํ๊ธฐ์ ์ ๋ฆฌํ๋ค. ๊ฐ๋ฐ์๋ ์๋ ๋งํผ๋ง ์๋ํ ์์๋ค.
๋ฏธ์ํ๋ค. ์ ๋จน๊ณ ์๊ธฐ์ ์ ์ง๋ํ๋ฒ ํด๋ดค๋ค. ์ฌ์ค C ๊ณต๋ถํ ํ์ ์๋ค.
๋๊ธ 0