๐ DLL = ์ฌ๋ฌ ํ๋ก๊ทธ๋จ์ด ํจ๊ป ์ฐ๋ โ๊ณต์ฉ ์ฐฝ๊ณ (๋์๊ด)โ
โก๏ธ ์ฆ, DLL์ ๊ธฐ๋ฅ์ด ๋ค์ด์๋ ๊ณต์ ํ์ผ์ด์์.
(Windows์์๋ .dll, ๋ฆฌ๋
์ค๋ .so, macOS๋ .dylib)
๐ ์ฃผ๋ฐฉ์ฅ์ด ์ง์ ๋ฐ์ฐฌ์ ๋ค ๋ง๋ค ์๋ ์์ง๋ง, ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ์ฃ .
๐ ๋ฐ์ฐฌ๊ฐ๊ฒ(DLL)์ ๊ฐ์ ํ์ํ ๋ฐ์ฐฌ์ ๊ฐ์ ธ๋ค ์ฐ๋ฉด ํจ์ฌ ๋น ๋ฅด๊ณ ํจ์จ์ ์ด์์.
// MyMathDll.h
extern "C" __declspec(dllexport) int Add(int a, int b);
// MyMathDll.cpp
#include "MyMathDll.h"
int Add(int a, int b) {
return a + b;
}
๐ ๋น๋ํ๋ฉด MyMathDll.dll ํ์ผ์ด ๋ง๋ค์ด์ง๋๋ค.
์ด ์์๋ ๋ํ๊ธฐ ๊ธฐ๋ฅ์ด ๋ค์ด ์์ด์.
#include "MyMathDll.h"
#include <iostream>
using namespace std;
int main() {
cout << Add(3, 5); // DLL์ Add ํจ์ ์ฌ์ฉ โ 8 ์ถ๋ ฅ
}
โก๏ธ ํ๋ก๊ทธ๋จ ์์ฒด์๋ Add ์ฝ๋๊ฐ ์์ด์.
โก๏ธ ์คํํ ๋ DLL์์ ๋น๋ ค์์ ์คํํฉ๋๋ค.
์ ์ ๋งํฌ (lib + dll ํจ๊ป ์ฌ์ฉ)
๋์ ๋ก๋ (LoadLibrary, GetProcAddress)
โ
์ฝ๋ ์ฌ์ฌ์ฉ (ํ ๋ฒ ๋ง๋ค์ด ์ฌ๋ฌ ํ๋ก๊ทธ๋จ์์ ์ฌ์ฉ)
โ
์
๋ฐ์ดํธ ์ฝ๋ค (DLL๋ง ๊ต์ฒดํ๋ฉด ๋จ)
โ
๋ฉ๋ชจ๋ฆฌ ์ ์ฝ (์ด์์ฒด์ ๊ฐ DLL์ ํ ๋ฒ๋ง ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฌ๊ณ ์ฌ๋ฌ ํ๋ก๊ทธ๋จ์ด ๊ณต์ )
โ
ํ๋ฌ๊ทธ์ธ ๊ตฌ์กฐ ๊ฐ๋ฅ (ํ๋ก๊ทธ๋จ ์คํ ์ค์ ์ ๊ธฐ๋ฅ ์ถ๊ฐ ๊ฐ๋ฅ)