C++
[C++] RAII(SBRM)๋ก ์์ ํ๊ฒ ๋ฆฌ์์ค ๊ด๋ฆฌํ๊ธฐ
[C++] RAII(SBRM)๋ก ์์ ํ๊ฒ ๋ฆฌ์์ค ๊ด๋ฆฌํ๊ธฐ
2022.07.27RAII(Resource Acquisition Is Initialization) - SBRM(Scope Bound Resource Managemnet) ๊ฐ๋น์ง ์ปฌ๋ ํฐ(Garbage Collector)๊ฐ ์๋ C#๊ณผ ๋ฌ๋ฆฌ, C++ ํ๋ก๊ทธ๋๋ฐ์์ ์์์ ๊ด๋ฆฌ๋ ์ ์ ์ผ๋ก ๊ฐ๋ฐ์์ ์ฑ
์์
๋๋ค. ํ(Heap) ์์ญ์์ ์ด๋ค ํธ๋ค์ ์์ฑํ์ผ๋ฉด ๋ฐ๋์ ํด์ ํ์ฌ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ ๋ฐํํด์ผ ํ๋ ๊ฒ์ด์ฃ . ๋ง์ฝ, ๊ทธ๋ ์ง ์๋ค๋ฉด ๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ๋ฐ์ํ๊ฑฐ๋ ์์ธก ๋ถ๊ฐ๋ฅํ ์ํฉ์ ์ง๋ฉดํ ์ ์์ต๋๋ค. ์ฌ๊ธฐ์ ์์(Resource)์ด๋ผ๋ ๊ฒ์ ํํ ์๊ธฐํ๋ ์ฌ์ฉ์ ๋ฒํผ ๊ณต๊ฐ์ด ๋ ์๋ ์๊ณ , ์์ผ, ํ์ผ, GDI ๋ฑ ์ด๋ค ๊ฐ์ฒด์ ํธ๋ค์ด ๋ ์๋ ์์ต๋๋ค. ์ด๋ฌํ ์์์ ์์ฑํ๊ณ , ์ค์ฝํ ์์ญ(Scope bound)์ ๋ฒ์ด๋๋ฉด ์๋์ผ๋ก..
[C++ DLL] ํด๋์ค๋ฅผ MFC ํ์ฅ DLL๋ก ๋ง๋ค๊ณ ์ฌ์ฉํ๊ธฐ (์์ ํฌํจ)
[C++ DLL] ํด๋์ค๋ฅผ MFC ํ์ฅ DLL๋ก ๋ง๋ค๊ณ ์ฌ์ฉํ๊ธฐ (์์ ํฌํจ)
2020.12.16๋ณธ๋ฌธ์ ์ฝ๊ธฐ ์ ์ ์๋์ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ๋ฉด ์ดํดํ๋๋ฐ ๋์์ด ๋ฉ๋๋ค. [C++ DLL] C++ ํด๋์ค๋ฅผ DLL๋ก ๋ง๋ค๊ณ ์ฌ์ฉํ๊ธฐ (์์ ํฌํจ) [C++ DLL] Visual Studio C++ ๋ช
์์ ๋งํฌํ๊ธฐ (์์ ํฌํจ) [C++ DLL] Visual Studio C++ ์์์ ๋งํฌํ๊ธฐ (์์ ํฌํจ) [C++ DLL] Visual Studio C++ DLL ์์ฑํ๊ธฐ (์์ ํฌํจ) MFC ํ์ฅ DLL MFC ํ์ฅ DLL์ MFC ํ๋ก์ ํธ์ MFC ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ฐ๊ฒฐ๋ ์ผ๋ฐ DLL์์๋ง ์ฌ์ฉ์ด ๊ฐ๋ฅํฉ๋๋ค. MFC ํ์ฅ DLL์ ์ฌ์ฉํ๋ฉด ํด๋์ค๋ฅผ ์ฝ๊ฒ DLL๋ก Export ํ ์ ์๊ธฐ ๋๋ฌธ์, ํ๊ฒ ํ๋ก์ ํธ๊ฐ MFC๋ผ๋ฉด MFC ํ์ฅ DLL๋ก ๋ง๋๋ ๊ฒ๋ ์ฌ์ด ๋ฐฉ๋ฒ์
๋๋ค. MFC ํ์ฅ DLL ๋ง๋ค๊ธฐ ํ ๋ฒ ๋ฐ๋ผํด..
[C++ DLL] C++ ํด๋์ค๋ฅผ DLL๋ก ๋ง๋ค๊ณ ์ฌ์ฉํ๊ธฐ (์์ ํฌํจ)
[C++ DLL] C++ ํด๋์ค๋ฅผ DLL๋ก ๋ง๋ค๊ณ ์ฌ์ฉํ๊ธฐ (์์ ํฌํจ)
2020.12.13๋ณธ๋ฌธ์ ์ฝ๊ธฐ ์ ์ ์๋์ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ๋ฉด ์ดํดํ๋๋ฐ ๋์์ด ๋ฉ๋๋ค. [C++ DLL] Visual Studio C++ DLL ์์ฑํ๊ธฐ (์์ ํฌํจ) [C++ DLL] Visual Studio C++ ์์์ ๋งํฌํ๊ธฐ (์์ ํฌํจ) [C++ DLL] Visual Studio C++ ๋ช
์์ ๋งํฌํ๊ธฐ (์์ ํฌํจ) C++ ํด๋์ค๋ฅผ DLL๋ก ๋ง๋ค๊ธฐ ์ง๊ธ๊น์ง C++ ํจ์๋ฅผ DLL๋ก ๋ง๋ค์ด(Export) ์ธ๋ถ ํ๋ก์ ํธ์์ ํธ์ถ(Import)ํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์๋๋ฐ์. ๊ทธ๋ฐ๋ฐ Class ๊ฐ์ฒด๋ ์ด๋ป๊ฒ DLL๋ก ๋ง๋ค ์ ์์๊น์? ์๋ ์ฝ๋ ์์์ ๊ฐ์ด ๋ง์ด์ฃ . //DLL ์์ฑ ํ๋ก์ ํธ์ ํค๋ class Person { public: Person(std::string name, int age, std::string ad..
[C++ DLL] Visual Studio C++ ๋ช
์์ ๋งํฌํ๊ธฐ (์์ ํฌํจ)
[C++ DLL] Visual Studio C++ ๋ช ์์ ๋งํฌํ๊ธฐ (์์ ํฌํจ)
2020.12.10๋ณธ๋ฌธ์ ๋ช
์์ ๋งํฌ๋ฅผ ์ฝ๊ธฐ ์ ์, ์๋ ๋งํฌ๋ฅผ ๋จผ์ ์ฝ์ด์ฃผ์ธ์. [C++ DLL] Visual Studio C++ DLL ์์ฑํ๊ธฐ (์์ ํฌํจ) [C++ DLL] Visual Studio C++ ์์์ ๋งํฌํ๊ธฐ (์์ ํฌํจ) ๋ช
์์ ๋งํน(Explicit Linking) ๋ช
์์ ๋งํน์ ๋ฐํ์ ์ค ํน์ DLL์ ๋ก๋ํ์ฌ ํธ์ถํ ํจ์์ ํฌ์ธํฐ๋ฅผ ์ป์ด ํจ์๋ฅผ ํธ์ถํ๋ ๋งํฌ ๋ฐฉ์์
๋๋ค. ๋ง๋ก๋ง ๋ด์๋ ์ ์ดํด๊ฐ ์ ๋ ๊ฒ ๊ฐ์๋ฐ์. ๋ฐ๋ก ์ํ ์ฝ๋๋ก ์ค๋ช
ํ๊ฒ ์ต๋๋ค. (์ํ ์ฝ๋๋ ๋ณธ๋ฌธ์ ํ๋จ์ ์ฒจ๋ถ๋์ด ์์ต๋๋ค.) CreateDLL ํ๋ก์ ํธ๋ ์ฌ์น์ฐ์ฐ ํจ์๋ฅผ ์ ๊ณตํ๋ DLL์ ์์ฑํ๊ณ , MainDLL ํ๋ก์ ํธ๋ ํด๋น DLL์ ๋ช
์์ ์ผ๋ก ํธ์ถํฉ๋๋ค. MyMath.h์๋ ๋ค์๊ณผ ๊ฐ์ด ์ ์ธ๋์ด ์์ต๋๋ค. #pragma..
[C++ DLL] Visual Studio C++ ์์์ ๋งํฌํ๊ธฐ (์์ ํฌํจ)
[C++ DLL] Visual Studio C++ ์์์ ๋งํฌํ๊ธฐ (์์ ํฌํจ)
2020.12.07์ง๋ ํฌ์คํ
์์ C++ DLL ์์ฑ ๋ฐฉ๋ฒ์ ์๊ฐํ์์ต๋๋ค. [C++ DLL] Visual Studio C++ DLL ์์ฑํ๊ธฐ (์์ ํฌํจ) ์ด๋ฒ ํฌ์คํ
์์๋ ์์ฑ๋ DLL์ ์์์ ๋งํฌํ๋ ๋ฐฉ๋ฒ์ ์๊ฐํ๊ฒ ์ต๋๋ค. ์์์ ๋งํน(Implicit Linking) ์์์ ๋งํน์ ์คํ ํ์ผ(*.exe) ์์ฒด์ DLL์ ํจ์ ์ ๋ณด๋ฅผ ํฌํจ์ํค๋ ๋ฐฉ์์ด๋ฉฐ, ์คํ ํ์ผ๊ณผ ๋์ผํ ๊ฒฝ๋ก์ dllํ์ผ์ด ์์ด์ผ ํฉ๋๋ค. ์ง๋ ํฌ์คํ
์์ ๋ค๋ค๋ ์์ ์ฝ๋์ ์ฝ์ ํ๋ก์ ํธ๋ฅผ ์ถ๊ฐํ๊ฒ ์ต๋๋ค. ์๋ฃจ์
์ ์ ํํ๊ณ ์ ํ๋ก์ ํธ๋ฅผ ์ถ๊ฐํฉ๋๋ค. ์ฝ์ ์ฑ์ ์ ํํ๊ณ MainDLL ์ด๋ผ๋ ์ด๋ฆ์ผ๋ก ํ๋ก์ ํธ๋ฅผ ์์ฑํฉ๋๋ค. ํ๋ก์ ํธ๊ฐ ์์ฑ๋๋ฉด MainDLL.cpp์ ์๋์ ๊ฐ์ด ์์ฑํฉ๋๋ค. #include #include "../CreateDLL/..
[C++ DLL] Visual Studio C++ DLL ์์ฑํ๊ธฐ (์์ ํฌํจ)
[C++ DLL] Visual Studio C++ DLL ์์ฑํ๊ธฐ (์์ ํฌํจ)
2020.12.04์ง๋ ํฌ์คํ
์์ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ๋์ /์ ์ ๋งํน์ ๋ํ ์ด๋ก ์ ์ธ ์๊ฐ๋ฅผ ํ์์ต๋๋ค. [C++ DLL] ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ ์ดํด [C++ DLL] ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ ์ดํด ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋? ์ฝ๋ฉ์ ํ๋ค ๋ณด๋ฉด ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์ ๊ฑฐ์ ํ์์
๋๋ค. ํ๋๋ถํฐ ์ด๊น์ง ์ผ์ผ์ด ๋ง๋ค์ด์ ํ๋ก๊ทธ๋จ์ ์ ์ํ๊ธฐ๋ ์ฝ์ง๊ฐ ์๊ธฐ ๋๋ฌธ์ด์ฃ . ์๋ฅผ ๋ค์ด, ํ๋ก๊ทธ๋จ์ ๋์ luckygg.tistory.com ์ด๋ฒ ํฌ์คํ
์์๋ Visual Studio C++ DLL ํ๋ก์ ํธ๋ฅผ ํตํด dll์ ์ด๋ป๊ฒ ์์ฑํ๊ณ ๋ถ๋ฌ์ค๋์ง ์์๋ณด๊ฒ ์ต๋๋ค. ๋ณธ๋ฌธ์ ์์ ์์๋ ์ฌ์น ์ฐ์ฐ ํจ์๋ฅผ dll์ ๊ตฌํํ๊ฒ ์ต๋๋ค. C++ DLL ํ๋ก์ ํธ ์์ฑ Visual Studio ์คํ ํ Visual C++ > DLL(๋์ ์ฐ๊ฒฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ) ํ๋ก์ ํธ๋ฅผ..
[C++ DLL] ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ ์ดํด
[C++ DLL] ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ ์ดํด
2020.11.28์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋? ์ฝ๋ฉ์ ํ๋ค ๋ณด๋ฉด ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์ ๊ฑฐ์ ํ์์
๋๋ค. ํ๋๋ถํฐ ์ด๊น์ง ์ผ์ผ์ด ๋ง๋ค์ด์ ํ๋ก๊ทธ๋จ์ ์ ์ํ๊ธฐ๋ ์ฝ์ง๊ฐ ์๊ธฐ ๋๋ฌธ์ด์ฃ . ์๋ฅผ ๋ค์ด, ํ๋ก๊ทธ๋จ์ ๋์์ ํ์ผ๋ก ๊ธฐ๋กํด์ผ ํ๋ค๋ฉด Logging ๊ด๋ จ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํ์ํ ๊ฒ์
๋๋ค. ์คํ ์์ค๋ก ์ ๋ช
ํ ๊ฒ์ Log4cpp๋ spdlog, easylogging ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋๋ฐ์. ์ด๋ฏธ ๋ง์ ์ฌ๋๋ค์ด ์ค๋์ ๋ถํฐ ๋ง๋ค์ด ์์ผ๋ฉฐ ๋ง์ ๋ฌธ์ ๋ค์ ํด๊ฒฐํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์
๋๋ค. ๊ทธ๋ฐ๋ฐ, ์ด๋ ๊ฒ ์ข์ ๋ฌด๋ฃ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋๊ณ ๋ณธ์ธ์ ๊ฒ์ผ๋ก ์ฒ์๋ถํฐ ๋ง๋ค ๊ฒ์ธ๊ฐ์? ๊ทธ๋ ๋ค๋ฉด ์์ ์ฑ๊ณผ ์ ๋ขฐ์ฑ์ ์ด๋ ์ธ์์ ํ๋ณดํ๊ณ , ๋จ์์๋ ๋ค๋ฅธ ์๋ง์ ๋ชจ๋๋ค์ ์ธ์ ๋ง๋ค๊น์? ๋ฐ๋ผ์ ํน์ํ ์ํฉ์ด ์๋ ์ด์, ์ด๋ฏธ ์์ ์ฑ์ด ํ๋ณด๋ ๋๋ ๊ฒ์ฆ๋ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ..
[C++] ํ๋ฌ๊ทธ์ธ ๊ตฌ์กฐ๋ก ํ๋ก๊ทธ๋จ ํ์ฅํ๊ธฐ (์์ ํฌํจ)
[C++] ํ๋ฌ๊ทธ์ธ ๊ตฌ์กฐ๋ก ํ๋ก๊ทธ๋จ ํ์ฅํ๊ธฐ (์์ ํฌํจ)
2020.10.25๋ณธ๋ฌธ์ ๋ด์ฉ์ Mike Dickheiser ์ ์์ C++ For Game Programmers (Game Development Series) 2nd Edition์ ๋ด์ฉ์ ์ฐธ๊ณ ํ์ฌ ์์ฑํ์ต๋๋ค. ์๊ฐ ํ๋ฌ๊ทธ์ธ(plugin)์ ๋ํด์ ๋ค์ด๋ณด์
จ๋์? Wikipedia์์๋ ์๋์ ๊ฐ์ด ํ๋ฌ๊ทธ์ธ์ ์ ์ํ๊ณ ์์ต๋๋ค. ๋งํฌ: ko.wikipedia.org/wiki/%ED%94%8C%EB%9F%AC%EA%B7%B8%EC%9D%B8 ํ๋ฌ๊ทธ์ธ(plugin) ๋๋ ์ถ๊ฐ ๊ธฐ๋ฅ(์ ๋์ธ;add-in, ์ ๋์จ;add-on)์ ํธ์คํธ ์์ฉ ํ๋ก๊ทธ๋จ๊ณผ ์๋ก ์๋ตํ๋ ์ปดํจํฐ ํ๋ก๊ทธ๋จ์ด๋ฉฐ, ํน์ ํ "์ฃผ๋ฌธ์" ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค. ์์ฉ ํ๋ก๊ทธ๋จ์ด ํ๋ฌ๊ทธ์ธ์ ์ ๊ณตํ๋ ๊น๋ญ์ ๋ง๋ค. ์ด๋ฅผํ
๋ฉด, ์๋ํํฐ ๊ฐ๋ฐ์๋ค์ด ์์ฉ ํ๋ก๊ทธ๋จ์ ํ์ฅํ๋ ๊ธฐ..