๋ฐ˜์‘ํ˜•

์†Œ๊ฐœ

C#์—์„œ๋Š” Microsoft.Office.Interop.Excel dll์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ„ํŽธํ•˜๊ฒŒ ์—‘์…€ ํŒŒ์ผ์— ์ ‘๊ทผํ•˜๊ณ , ๋ฐ์ดํ„ฐ ์ฝ๊ณ  ์“ฐ๊ธฐ๊ฐ€ ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ C++์ด๋‚˜ MFC๋Š” ์ œ๊ณต๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์—†๋‹ค ๋ณด๋‹ˆ ๋„ˆ๋ฌด๋‚˜๋„ ๋ถˆํŽธํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ๊ธ€์— ๊ฒ€์ƒ‰ํ•ด๋ณด๋ฉด ๋Œ€๋ถ€๋ถ„ Automation class(CXLEzAutomation)๋ฅผ ์‚ฌ์šฉํ•œ ๋ฐฉ๋ฒ•๋“ค์ด ๋‚˜์˜ค๋Š”๋ฐ์š”. Github ์ฃผ์†Œ๋‚˜ ๊ฐœ๋ฐœ์ž ๋งํฌ๊ฐ€ ์—†์–ด ์—…๋ฐ์ดํŠธ๋Š” ๋˜๋Š” ๊ฑด์ง€, ๋ฒ„๊ทธ๋Š” ์—†๋Š”์ง€ ์•Œ ์ˆ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋˜๋Š” ์ง์ ‘ ํŒŒ์ผ์— ์ ‘๊ทผํ•˜์—ฌ ์ปค์Šคํ„ฐ๋งˆ์ด์ฆˆ ๋œ ํด๋ž˜์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒŒ์‹œ๋ฌผ๋„ ๋ณด์•˜๋Š”๋ฐ์š”. ์ด๊ฒƒ ์—ญ์‹œ ์ž ์žฌ์ ์ธ ๋ฒ„๊ทธ๋ผ๋“ ๊ฐ€, ๋” ์ด์ƒ ์—…๋ฐ์ดํŠธ๊ฐ€ ์—†์–ด ๋ฒ”์šฉ์„ฑ์ด ๋ถ€์กฑํ•œ ๊ฒฝ์šฐ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ € ์—ญ์‹œ ์ด๊ฒƒ ์ €๊ฒƒ ์‹œ๋„ํ•ด๋ณด๋‹ค๊ฐ€ XLNT ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์•Œ๊ฒŒ๋˜์—ˆ๊ณ , ๊ฐ„ํŽธํ•˜๊ฒŒ ์—‘์…€ ํŒŒ์ผ ์ฝ๊ณ  ์“ฐ๊ธฐ ์ž‘์—…์ด ๊ฐ€๋Šฅํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด XLNT๋Š” ์˜คํ”ˆ์†Œ์Šค ๊ธฐ๋ฐ˜์˜ C++ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ, ํฌ๋กœ์Šค ํ”Œ๋žซํผ ๊ฐœ๋ฐœ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜ Github์— ์ ‘์†ํ•˜์—ฌ ํ™•์ธํ•˜์„ธ์š”.

XLNT:  https://github.com/tfussell/xlnt

 

tfussell/xlnt

:bar_chart: Cross-platform user-friendly xlsx library for C++11+ - tfussell/xlnt

github.com

๋ณธ๋ฌธ์˜ ์ƒ˜ํ”Œ ์ฝ”๋“œ๋Š” ํ•˜๋‹จ์— ์ฒจ๋ถ€๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ค€๋น„ ๋‹จ๊ณ„

๋ณธ๋ฌธ์˜ ํ”„๋กœ์ ํŠธ๋Š” Visual Studio 2017 x64 ํ™˜๊ฒฝ์˜ MFC Dialog ํ”„๋กœ์ ํŠธ๋กœ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค. Visual Studio 2015์—์„œ๋„ ๋™์ž‘ํ•˜๋Š” ๊ฒƒ์€ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  XLNT๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” CMake ํ”„๋กœ๊ทธ๋žจ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ์ƒ์šฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์€ .Net ๋˜๋Š” C++์šฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(dll, h, lib)๋ฅผ ์ œ๊ณตํ•˜๋Š”๋ฐ์š”. ์ด๋Ÿฌํ•œ ์˜คํ”ˆ ์†Œ์Šค ๊ธฐ๋ฐ˜์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์€ CMake๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฐœ๋ฐœ์ž์˜ ํ™˜๊ฒฝ์— ๋งž๊ฒŒ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋นŒ๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

CMake๋Š” ์•„๋ž˜ ๋งํฌ์—์„œ ๋‹ค์šด๋กœ๋“œ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
๋งํฌ: https://cmake.org/download/

๋งŒ์•ฝ, CMake๊ฐ€ ๋ฌด์—‡์ธ์ง€ ๋ชจ๋ฅด๊ฒ ๊ณ  Visual Studio 2017 x64 ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋งŒ ํ•„์š”ํ•˜๋‹ค๋ฉด, ์ œ๊ฐ€ ๋ฏธ๋ฆฌ ๋นŒ๋“œํ•ด ๋†“์€ ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ ์‚ฌ์šฉํ•˜์„ธ์š”.

Visual Studio 2017 x64 XLNT Library.zip
2.40MB

CMake๋กœ XLNT ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ƒ์„ฑํ•˜๊ธฐ

์ฃผ์˜
 
 

๋”ฐ๋ผ ํ•˜๊ธฐ ์ „์—, ํ•˜๋‚˜ ์ฃผ์˜์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค. XLNT๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๊ณผ์ • ์ค‘ Compile Error๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”๋ฐ์š”. ์ถ”์ธกํ•˜๊ธฐ๋กœ๋Š” ์†Œ์Šค ํŒŒ์ผ ์ผ๋ถ€๊ฐ€ UTF-8๊ณผ ๊ด€๋ จ๋œ ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. ํ•ด๋‹น ์†Œ์Šค ํŒŒ์ผ์„ ๊ฐ•์ œ๋กœ UTF-8๋กœ ์ €์žฅํ•˜๋ฉด ๋ฌธ์ œ์—†์ด ๋นŒ๋“œ๋˜๊ณ , ์ƒ์„ฑ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ๋ฌธ์ œ๋Š” ์—†์Šต๋‹ˆ๋‹ค๋งŒ, ์กฐ๊ธˆ ์ฐ์ฐํ•œ ๋ถ€๋ถ„์ด๊ธด ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿผ, ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. XLNT Github์— ์ ‘์†ํ•˜์—ฌ Source code (zip) ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•œ ํ›„ ์••์ถ•์„ ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค. (์ €๋Š” XLNT 1.5๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜์˜€์Šต๋‹ˆ๋‹ค.) 

CMake ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๊ณ  ์•„๋ž˜์˜ ์„ค๋ช…์ฒ˜๋Ÿผ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. 

CMake ์‹คํ–‰ ํ›„ ๊ฒฝ๋กœ๊ฐ€ ์ง€์ •๋œ ํ™”๋ฉด

ํ•ญ๋ชฉ ์„ค๋ช…
 Where is the source code  Library์˜ Source code ๊ฒฝ๋กœ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
 Where to build the binaries  Build๋œ ํŒŒ์ผ์ด ์ƒ์„ฑ๋˜๋Š” ๊ฒฝ๋กœ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

Configure ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ์ž…๋ ฅํ•˜๋Š” ์ฐฝ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ž์‹ ์˜ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์— ๋งž์ถฐ ์ž…๋ ฅํ•œ ํ›„ Finish ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์ž…๋ ฅ ํ™”๋ฉด

๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ์ž…๋ ฅํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋นŒ๋“œ ์†์„ฑ์„ ๋ณ€๊ฒฝํ•˜๋Š” ํ™”๋ฉด์ด ๋ณด์ž…๋‹ˆ๋‹ค. ์•„๋ž˜์˜ ์„ค๋ช…์ฒ˜๋Ÿผ ๊ฒฝ๋กœ๋ฅผ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

๋นŒ๋“œ ์†์„ฑ ๋ณ€๊ฒฝ ํ™”๋ฉด

ํ•ญ๋ชฉ ์„ค๋ช…
 CMAKE_INSTALL_PREFIX  ๊ธฐ๋ณธ ๊ฒฝ๋กœ์— ${BUILD_TYPE}์„ ๋ถ™์ด๋ฉด Debug, Release ๋ชจ๋“œ ํด๋” ๋ณ„๋กœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ƒ์„ฑ.

์ž…๋ ฅ์„ ๋งˆ์ณค์œผ๋ฉด Generate ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  Where to build the binaries์— ์ž…๋ ฅํ•œ ๊ฒฝ๋กœ์— ๋“ค์–ด๊ฐ€ ๋ณด๋ฉด ํ”„๋กœ์ ํŠธ๊ฐ€ ์ƒ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. xlnt_all.sln์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ƒ์„ฑ์„ ์œ„ํ•œ ํ”„๋กœ์ ํŠธ

ALL_BUILD ํ”„๋กœ์ ํŠธ๋ฅผ ์„ ํƒํ•œ ํ›„ ๋นŒ๋“œํ•ฉ๋‹ˆ๋‹ค.

xlnt_all ์†”๋ฃจ์…˜ ํ™”๋ฉด

์•ž์„œ ์–˜๊ธฐํ•œ ๋ฐ”์™€ ๊ฐ™์ด ๋นŒ๋“œ ์‹คํŒจ๊ฐ€ ๋ฉ”์‹œ์ง€๊ฐ€ ๋ณด์ž…๋‹ˆ๋‹ค.

๋นŒ๋“œ ์‹คํŒจ

์•„๋ž˜์˜ ์œ„์น˜์—์„œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋Š”๋ฐ์š”.

์—๋Ÿฌ ๋ฐœ์ƒ ์œ„์น˜

์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ ์†Œ์Šค ํŒŒ์ผ์„ ๋ฉ”๋ชจ์žฅ์œผ๋กœ ์—ด์€ ํ›„ ๋‹ค์‹œ ๋ฎ์–ด์“ฐ๊ธฐ๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ ํŒŒ์ผ

์•„๋ž˜์ฒ˜๋Ÿผ ๋ฉ”๋ชจ์žฅ์œผ๋กœ ์—ด๊ณ  '๋‹ค๋ฅธ ์ด๋ฆ„์œผ๋กœ ์ €์žฅ'์„ ํด๋ฆญํ•œ ํ›„ ๋ฎ์–ด์“ฐ๊ธฐ๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

๋ฉ”๋ชจ์žฅ์œผ๋กœ ์—ด์€ ๋ชจ์Šต

๋‹ค์‹œ Visual Studio๋กœ ๋Œ์•„์˜ค๋ฉด ์•„๋ž˜์˜ ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. '๋ชจ๋‘ ์˜ˆ' ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€

๊ทธ๋ฆฌ๊ณ  ๋‹ค์‹œ ๋นŒ๋“œ๋ฅผ ํ•˜๋ฉด ์„ฑ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋นŒ๋“œ ์„ฑ๊ณต ๋ฉ”์‹œ์ง€

๋‹ค์Œ์œผ๋กœ INSTALL ํ”„๋กœ์ ํŠธ๋ฅผ ์„ ํƒํ•˜๊ณ  ๋นŒ๋“œํ•ฉ๋‹ˆ๋‹ค. INSTALL ํ”„๋กœ์ ํŠธ๋Š” ๋ณ„๋ฌธ์ œ ์—†์ด ๋นŒ๋“œ์— ์„ฑ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋นŒ๋“œ ์„ฑ๊ณต ๋ฉ”์‹œ์ง€

ํ”„๋กœ์ ํŠธ ๋นŒ๋“œ ์™„๋ฃŒ ํ›„ binaries ๊ฒฝ๋กœ์— installed ํด๋”๊ฐ€ ์ƒ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ƒ์„ฑ

์—ฌ๊ธฐ๊นŒ์ง€, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ƒ์„ฑ ๊ณผ์ •์ด์—ˆ์Šต๋‹ˆ๋‹ค.

MFC์—์„œ XLNT ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉํ•˜๊ธฐ

MFC Dialog ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ํ›„, ์ด์ „์— ์ƒ์„ฑํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒŒ์ผ์„ ๋ณต์‚ฌํ•˜์—ฌ ๋ถ™์—ฌ ๋„ฃ์Šต๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ์— ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒŒ์ผ ํฌํ•จ

๊ทธ๋ฆฌ๊ณ  ํ”„๋กœ์ ํŠธ์˜ ์†์„ฑ์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. ๋จผ์ €, dll ์œ„์น˜๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

DLL ๊ฒฝ๋กœ ์„ค์ •

ํ•ญ๋ชฉ ๊ฐ’
 ๊ตฌ์„ฑ ์†์„ฑ > ๋””๋ฒ„๊น… > ํ™˜๊ฒฝ  PATH=$(ProjectDir)\bin;%PATH%

ํ—ค๋” ํŒŒ์ผ ๊ฒฝ๋กœ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

ํ—ค๋” ํŒŒ์ผ ๊ฒฝ๋กœ ์„ค์ •

ํ•ญ๋ชฉ ๊ฐ’
 ๊ตฌ์„ฑ ์†์„ฑ > C/C++ > ์ผ๋ฐ˜ > ์ถ”๊ฐ€ ํฌํ•จ ๋””๋ ‰ํ„ฐ๋ฆฌ  $(ProjectDir)include;

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ฒฝ๋กœ๋„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ฒฝ๋กœ ์„ค์ •

ํ•ญ๋ชฉ ๊ฐ’
 ๊ตฌ์„ฑ ์†์„ฑ > ๋ง์ปค > ์ผ๋ฐ˜ > ์ถ”๊ฐ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋””๋ ‰ํ„ฐ๋ฆฌ  $(ProjectDir)lib

๋งˆ์ง€๋ง‰์œผ๋กœ ๋ถˆ๋Ÿฌ์˜ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒŒ์ผ์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒŒ์ผ ์„ค์ •

ํ•ญ๋ชฉ ๊ฐ’
 ๊ตฌ์„ฑ ์†์„ฑ > ๋ง์ปค > ์ž…๋ ฅ > ์ถ”๊ฐ€ ์ข…์†์„ฑ  xlntd.lib

์—ฌ๊ธฐ๊นŒ์ง€ ํ”„๋กœ์ ํŠธ์˜ ์†์„ฑ ์„ค์ •์ด์—ˆ๊ณ , ์ด์ œ ํ—ค๋” ํŒŒ์ผ์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํŒŒ์ผ์„ include ํ•ฉ๋‹ˆ๋‹ค.

#include <xlnt/xlnt.hpp>

์ž˜ ๋”ฐ๋ผ์˜ค์…จ๋‚˜์š”? ํ”„๋กœ์ ํŠธ ์„ค์ • ๋‹จ๊ณ„๊ฐ€ ๋งŽ์•„ ๋ณด์ด์ง€๋งŒ, ๊ธฐ๋ณธ์ ์œผ๋กœ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฑฐ์น˜๋Š” ๋‹จ๊ณ„์ด๋ฏ€๋กœ ๊ผญ ์ˆ™์ง€ํ•˜์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์ž, ์ด์ œ ํ”„๋กœ์ ํŠธ์— ๋ฒ„ํŠผ ๋‘ ๊ฐœ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ , ๊ฐ ๋ฒ„ํŠผ ์ด๋ฒคํŠธ์— ์—‘์…€ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์ฝ”๋“œ์™€ ์ฝ์–ด์˜ค๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

// ์—‘์…€ ํŒŒ์ผ ์ƒ์„ฑ ์˜ˆ์ œ
void CExamXLNTDlg::OnBnClickedBtnCreate()
{
	xlnt::workbook wb;
	xlnt::worksheet ws = wb.active_sheet();
	ws.cell("A1").value(5);
	ws.cell("B2").value("string data");
	ws.cell("C3").formula("=RAND()");
	ws.merge_cells("C3:C4");
	ws.freeze_panes("B2");
	wb.save("example.xlsx");
}

// ์—‘์…€ ํŒŒ์ผ ์ฝ์–ด์˜ค๋Š” ์˜ˆ์ œ
void CExamXLNTDlg::OnBnClickedBtnRead()
{
	xlnt::workbook wb;
	wb.load("example.xlsx");

	xlnt::worksheet ws = wb.active_sheet();
	int val = ws.cell("A1").value<int>();
}

์—‘์…€ ๋ฐ์ดํ„ฐ ์ƒ์„ฑ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด example.xlsx ํŒŒ์ผ์ด ์ƒ์„ฑ๋˜๊ณ , ํŒŒ์ผ์„ ์—ด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์ž…๋ ฅ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์‹คํ–‰ ๊ฒฐ๊ณผ

์—‘์…€ ๋ฐ์ดํ„ฐ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด A1 ์…€์˜ ๊ฐ’์ธ 5๊ฐ€ ๋ฐ˜ํ™˜๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ฃผ์˜
 
 

๋งŒ์•ฝ, ํ”„๋กœ๊ทธ๋žจ ์ข…๋ฃŒ ํ›„ ์ถœ๋ ฅ ์ฐฝ์— ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ๋ณด์ธ๋‹ค๋ฉด ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด MFC ์‚ฌ์šฉ์„ ์ •์  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ MFC ์‚ฌ์šฉ์œผ๋กœ ๋ณ€๊ฒฝํ•ด ๋ณด์„ธ์š”. C++์—์„œ๋Š” ๋ฐœ์ƒํ•˜์ง€ ์•Š๊ณ , MFC์—์„œ๋งŒ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์•„ False Memory๋กœ ์ถ”์ธก๋ฉ๋‹ˆ๋‹ค.

MFC ์‚ฌ์šฉ ์˜ต์…˜ ๋ณ€๊ฒฝ ํ™”๋ฉด

๋ณธ๋ฌธ์˜ ์ƒ˜ํ”Œ ์ฝ”๋“œ๋Š” ์•„๋ž˜ ์ฒจ๋ถ€ ํŒŒ์ผ์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.

Exam_XLNT.zip
1.66MB

๋ฐ˜์‘ํ˜•