{"id":99,"date":"2010-04-17T22:45:37","date_gmt":"2010-04-18T07:45:37","guid":{"rendered":"\/blog\/?p=99"},"modified":"2023-09-21T09:41:16","modified_gmt":"2023-09-21T00:41:16","slug":"visual-studio-6-0%ec%97%90%ec%84%9c-2005%ec%9d%b4%ec%83%81%ec%9c%bc%eb%a1%9c-%eb%84%98%ec%96%b4%ea%b0%80%ec%95%bc-%ed%95%98%eb%8a%94-%ec%9d%b4%ec%9c%a0","status":"publish","type":"post","link":"https:\/\/hasu0707.duckdns.org\/blog\/?p=99","title":{"rendered":"Visual Studio 6.0\uc5d0\uc11c 2005\uc774\uc0c1\uc73c\ub85c \ub118\uc5b4\uac00\uc57c \ud558\ub294 \uc774\uc720..."},"content":{"rendered":"\n<P>\ub9ce\uc740 \ubd84\ub4e4\uc774 \ud604\uc7ac Visual Studio\u00ae 2005\ub85c \uc5c5\uadf8\ub808\uc774\ub4dc \uc911\uc77c \uac83\uc73c\ub85c \uc0dd\uac01 \ub429\ub2c8\ub2e4. \uadf8\ub798\uc11c \uc9c0\uae08 \uc774\uc57c \ub9d0\ub85c \uc0c8 \ucef4\ud30c\uc77c\ub7ec\uc640 \uc800\uc758 \uacbd\ud5d8\ub2f4\uc5d0 \ub300\ud55c \uae00\uc744 \uc4f0\uae30\uc5d0 \uc88b\uc740 \uc2dc\uae30\uc778 \uac83\uc73c\ub85c \uc0dd\uac01 \ub418\uc5b4 \uc774 \uae30\uc0ac\ub97c \uc4f0\uac8c \ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uc65c \uc774\uc81c\uc11c\uc57c \uc4f0\uac8c \ub418\uc5c8\ub0d0\uace0\uc694? \ub2a6\uc5c8\ub2e4\uace0 \uc0dd\uac01 \ub420 \ub54c\uac00 \uac00\uc7a5 \ube60\ub978 \uac83 \uc544\ub2c8\uaca0\uc2b5\ub2c8\uae4c? \n<P>\uc5ec\ub7ec\ubd84\uc774 Visual Studio 2005\uc5d0\uc11c \uac00\uc7a5 \uba3c\uc800 \uc8fc\ubaa9\ud560 \uac83\uc774 \ubc14\ub85c \ubc84\uc804 \uad00\ub9ac\uc790 \uc785\ub2c8\ub2e4. \uc774 \ubc84\uc804 \uad00\ub9ac\uc790\ub294 \uc5ec\ub7ec\ubd84\uc758 \ud504\ub85c\uc81d\ud2b8\ub97c \uc5f4\uc5b4\ubcf8 \ub4a4 \uc5b4\ub5a4 \ubc84\uc804\uc744 \uc2e4\ud589 \uc2dc\ud0ac\uc9c0\ub97c \uacb0\uc815\ud558\ub294 \uc5ed\ud560\uc744 \ud569\ub2c8\ub2e4. Visual Studio 2005\ub97c Visual Studio 2003\uacfc \ub098\ub780\ud788 \uc124\uce58 \ud558\uc2e4 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \ub458\uc740 \uc5ec\ub7ec\ubd84\uc758 \ucef4\ud4e8\ud130\uc5d0\uc11c \uc0ac\uc774 \uc88b\uac8c \ub3d9\uac70\ub97c \ud558\uac8c \ub418\ubbc0\ub85c \uc774\ub294 \uc5ec\ub7ec\ubd84\uc774 \ud55c\uac00 \ud560 \ub54c \uc6d0\ud558\ub294 \ud504\ub85c\uc81d\ud2b8\ub97c \ub530\ub85c \uc5c5\uadf8\ub808\uc774\ub4dc \ud558\uae30\uc5d0 \uc88b\uaca0\uc8e0. 2003 \ubc84\uc804\uc758 \ud504\ub85c\uc81d\ud2b8\ub97c \uc5f4\uba74 Visual Studio 2005\ub294 \ud504\ub85c\uc81d\ud2b8\ub97c \ubcc0\ud658\uc744 \ud558\uae30 \uc804\uc5d0 \ubcf5\uc0ac\ubcf8\uc744 \ub9cc\ub4e4 \uc9c0\ub97c \ubb3c\uc5b4\ubcf4\uace0 \ub09c \uc774\ud6c4 \ubcc0\ud658\uc744 \ud569\ub2c8\ub2e4. \ubcc0\ud658 \uc911\uc5d0\ub294 \ubc1c\uacac\ub418\ub294 \ubaa8\ub4e0 \ubb38\uc81c\ub97c \uae30\uc220\ud55c XML \ubcf4\uace0\uc11c\ub97c \uc0dd\uc131 \ud569\ub2c8\ub2e4. \n<P>\n<P>\uc5b8\uc5b4\uc758 \uc791\uc740 \ubcc0\ud654 \n<P>Visual Studio 2005\ub97c \uac04\ub2e8\ud788 \uc0ac\uc6a9\ud574 \ubcf4\uae30 \uc704\ud574 \uc774\uc804 \uae30\uc0ac\ub4e4\uc758 \ud504\ub85c\uc81d\ud2b8 \uba87 \uac1c\ub97c \ubd88\ub7ec\uc640 \ucef4\ud30c\uc77c \ud574 \ubcf4\uc558\uc2b5\ub2c8\ub2e4. Visual Studio 2005\ub294 \ucd5c\uc2e0 \uc5b8\uc5b4 \ud45c\uc900\uc744 \ub530\ub974\ub294 \ucd5c\uc2e0 \ucef4\ud30c\uc77c\ub7ec \uc774\uae30 \ub54c\ubb38\uc5d0 \ubaa8\ub4e0 \ud504\ub85c\uc81d\ud2b8\ub4e4\uc740 \uc57d\uac04\uc758 \uc218\uc815\uc774 \ud544\uc694 \ud588\uc2b5\ub2c8\ub2e4. \ub300\ubd80\ubd84\uc758 \"\uc0c8\ub85c\uc6b4\" \ubb38\ubc95\ub4e4\uc740 C++ \ud45c\uc900\uc5d0 \uc62c\ub77c \uac04\uc9c0 \uaf64 \ub418\uc5c8\uc73c\ub098 Visual Studio\ub294 \uc774\uc81c\uc11c\uc57c \uc774\ub97c \ub530\ub974\uac8c \ub418\uc5c8\ub124\uc694. \n<P>for loop \uc548\uc758 \uc9c0\uc5ed \ubcc0\uc218\ub294 loop \ubc16\uc5d0\uc11c\ub294 \ub354 \uc774\uc0c1 \uc720\ud6a8 \ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc804\uc5d0\ub294 \ub2e4\uc74c\uacfc \uac19\uc774 \uc791\uc131 \ud560 \uc218 \uc788\uc5c8\uc2b5\ub2c8\ub2e4 \n<P>for (int i=0; i&lt;max; i++) {<br \/>\n<BLOCKQUOTE>\n<P>\/\/ do something<\/P><\/BLOCKQUOTE>\n<P>} \n<P>if (i&gt;0) {<br \/>\n<BLOCKQUOTE>\n<P>\/\/ do something else<\/P><\/BLOCKQUOTE>\n<P>} \n<P>\uc774 \uc608\uc81c\uc5d0\uc11c \ubcc0\uc218 i \uc758 scope\ub294 for \ubb38 \uc548\uc73c\ub85c \ub418\uc5b4 \uc788\uc73c\uba74\uc11c \uadf8 \ubc16\uc5d0\uc11c \ub2e4\uc2dc \uc0ac\uc6a9\ub429\ub2c8\ub2e4. \uacf5\uc2dd\uc801\uc73c\ub85c C++\ub294 \uc774\ub97c \ud5c8\uc6a9\ud558\uc9c0 \uc54a\uc73c\ubbc0\ub85c \uc774\uc81c\ub294 \uc774 \ucf54\ub4dc\ub97c \ub2e4\uc74c\uacfc \uac19\uc774 \uc218\uc815\ud574\uc57c \ud569\ub2c8\ub2e4: \n<P>int i; \/\/ for loop \ubc16\uc73c\ub85c \ube8d\ub2c8\ub2e4 \n<P>for (i=0; i&lt;max; i++) {<br \/>\n<BLOCKQUOTE>\n<P>\/\/ do something<\/P><\/BLOCKQUOTE>\n<P>} \n<P>if (i&gt;0) {<br \/>\n<BLOCKQUOTE>\n<P>\/\/ do something else<\/P><\/BLOCKQUOTE>\n<P>} \n<P>\uc120\uc5b8 \ub418\uc9c0 \uc54a\uc740 \uc815\uc801 \ubcc0\uc218(\uc9c0\uc5ed \ub610\ub294 \uc804\uc5ed \ubcc0\uc218) \ub4e4\uc740 \ub354 \uc774\uc0c1 default\ub85c \uc815\uc218 \ud615\uc744 \uac16\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc774\uc804\uc5d0\ub294 \ub2e4\uc74c\uacfc \uac19\uc774 \uc4f8 \uc218 \uc788\uc5c8\uace0 \n<P>const BUFLEN=255; \n<P>\ucef4\ud30c\uc77c\ub7ec\ub294 \uc554\ubb35\uc801\uc73c\ub85c BUFLEN \uc5d0 int \ud615\uc744 \uc9c0\uc815\ud588\uc2b5\ub2c8\ub2e4. \uc554\ubb35\uc801 int \ub294 \uc774\uc81c \ud5c8\uc6a9 \ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \ubc18\ub4dc\uc2dc \uc544\ub798\uc640 \uac19\uc774 \uc120\uc5b8\uc744 \ud574\uc8fc\uc5b4\uc57c \ud569\ub2c8\ub2e4: \n<P>const int BUFLEN=255; \n<P>\uc774\ub294 \ubaa8\ub4e0 \uc885\ub958\uc758 \ubcc0\uc218\uc5d0 \uc801\uc6a9 \ub429\ub2c8\ub2e4 \u2013 \uc815\uc801, \uc804\uc5ed, \uba64\ubc84 \ub370\uc774\ud130 \uadf8\ub9ac\uace0 \ud568\uc218\uc758 \ubc18\ud658\ud615. int \ub97c \ube60\ud2b8\ub9ac\uba74 \uc774\uc820 \ucef4\ud30c\uc77c\ub7ec\ub294 \"error C4430: \ud615\uc2dd \uc9c0\uc815\uc790\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. int\ub85c \uac00\uc815\ud569\ub2c8\ub2e4. \ucc38\uace0: C++\uc5d0\uc11c\ub294 \uae30\ubcf8 int\ub97c \uc9c0\uc6d0\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.\" \ub77c\ub294 \uc5d0\ub7ec \uba54\uc2dc\uc9c0\ub97c \ubcf4\ub0c5\ub2c8\ub2e4. \n<P>C\/C++\uc5d0 \ub300\ud55c \ubcc0\ud654\uc758 \ub2e4\ub978 \uce74\ud14c\uace0\ub9ac\ub85c \uc0c8\ub85c\uc6b4 Safe C \uc640 Safe C++ \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \ub4e4\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub4e4\uc740 \uc5ec\ub7ec\ubd84\ub4e4\uc774 \uc798 \uc54c\uace0 \uacc4\uc2dc\uace0 \uc560\uc6a9 \ud558\uc2dc\ub294 \uae30\uc874\uc758 \uc720\ud589 \uc9c0\ub09cC \ub7f0\ud0c0\uc784(CRT) \ud568\uc218 \ubcf4\ub2e4 \uc548\uc804\ud55c \ubc84\uc804\uc744 \uc81c\uacf5 \ud569\ub2c8\ub2e4. strcpy, fopen \ub4f1\ub4f1. Safe C++\uc5d0 \ub300\ud574\uc11c\ub294 \ub2e4\uc74c \uae30\uc0ac\uc5d0\uc11c \uc880\ub354 \ub2e4\ub8e8\ub824\uace0 \ud569\ub2c8\ub2e4. \uadf8 \ub54c\uae4c\uc9c0 \ubabb \uae30\ub2e4\ub9ac\uc2dc\ub294 \ubd84\ub4e4\uc744 \uc704\ud574 Martyn Lovell \uc774 \uc4f4 2005\ub144 5\uc6d4\ud638\uc758 \"Safe! Repel Attacks on Your Code with the Visual Studio 2005 Safe C and C++ Libraries\"\ub97c \uc18c\uac1c\ud574 \ub4dc\ub9bd\ub2c8\ub2e4. \n<P>(<a class=\"con_link\" href=\"http:\/\/msdn.microsoft.com\/msdnmag\/issues\/05\/05\/SafeCandC\" target=\"_blank\" rel=\"noopener\"><FONT color=#0018a0>msdn.microsoft.com\/msdnmag\/issues\/05\/05\/SafeCandC (\uc601\ubb38)<\/FONT><\/A>). \n<P>C++\ub294 \uadf8\ub807\ub2e4 \uce58\uace0 MFC \ub294 \uc5b4\ub5bb\uac8c \ub418\uc5c8\uc744\uae4c\uc694? Visual Studio 2005\uc5d0\ub294 MFC \uc5d0\ub294 \ud070 \ubcc0\ud654\uac00 \uc5c6\uace0 \uc774\ub294 \uc81c\uac00 \uc804\uc5d0 \ub9d0 \ud588\ub358 \uac83\ucc98\ub7fc \uc88b\uc740 \uc77c\uc774\ub77c \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ub294 \uace7 MFC \uac00 \uc548\uc815\uc801\uc774\ub780 \ub73b\uc73c\ub85c \ud574\uc11d \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uadf8\ub7ec\ub098 CWnd::OnNcHitTest \uc758 \ub9ac\ud134 \ud615\uc774 UINT\uc5d0\uc11c LRESULT\ub85c \ubc14\ub00c\ub294 \ub4f1 \uc774\uacfc \uac19\uc740 \ub2e4\ub978 \uc791\uc740 \ubcc0\ud654\ub4e4\uc774 \uc788\uc744 \uc218 \uc788\uc9c0\ub9cc \uc5ec\ub7ec\ubd84\uc758 \uae30\uc874 MFC \ud504\ub85c\uadf8\ub7a8\uacfc \ud638\ud658\uc774 \uc548 \ub418\ub294 \uacbd\uc6b0\ub294 \uc5c6\uc744 \uac83\uc73c\ub85c \ubcf4\uc785\ub2c8\ub2e4. \n<P>\n<P>\uad00\ub9ac \uc138\uacc4\ub85c \uc774\ub3d9 \n<P>C+ +\uc640 MFC\ub294 \ud504\ub85c\uadf8\ub798\ubc0d\uc5d0 \uc788\uc5b4 \uc774\ubbf8 \uc548\uc815\ud654\ub41c \ubd80\ubd84\uc774\ubbc0\ub85c \uc774 \ubd80\ubd84\uc5d0\uc11c \uc5c5\uadf8\ub808\uc774\ub4dc\ub97c \ud1b5\ud55c \ubb38\uc81c\uac00 \ubc1c\uc0dd \ud558\ub9ac\ub77c \uc0dd\uac01 \ub418\uc9c4 \uc54a\uc2b5\ub2c8\ub2e4. Visual Studio 2003\uacfc Visual Studio 2005 \uac04\uc758 \ud070 \ubcc0\ud654\uac00 \ub4e4\uc5b4\uac04 \ubd80\ubd84\uc740 \uad00\ub9ac \ucf54\ub4dc\uc758 \uc601\uc5ed\uc785\ub2c8\ub2e4. \uc774 \ubcc0\ud654 \uc911 \ud558\ub098\ub85c \uc5ec\ub7ec\ubd84\ub4e4\uc774 \ub9ce\uc774 \uc77d\uc5b4 \ubd24\uc744 \uc0c8 C++\/CLI \uad6c\ubb38\uc774 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ub294 Managed Extension \uc758 \ubc84\uc804 V2 \ub77c\uace0 \uc0dd\uac01 \ud558\uc2dc\uba74 \ub429\ub2c8\ub2e4. \uc5ec\ub7ec\ubd84\ub4e4\uc774 \uc774\ub97c \uc0ac\uc6a9\ud558\uae30\uc5d0 \uc544\uc9c1 \uc900\ube44\uac00 \uc548 \ub418\uc168\ub2e4\uace0 \uc0dd\uac01\ud558\uba74 \/clr:oldSyntax \uc635\uc158\uc744 \uc774\uc6a9\ud574 \uc774\uc804\uc758 Managed Extension \uc744 \uadf8\ub300\ub85c \uc0ac\uc6a9\ud558\uba74 \ub429\ub2c8\ub2e4. \uc774 \uc635\uc158\uc740 \uad00\ub9ac \ub610\ub294 \uad00\ub9ac\/\ub124\uc774\ud2f0\ube0c \ud504\ub85c\uc81d\ud2b8\ub97c Visual Studio .NET 2003 \uc5d0\uc11c Visual Studio 2005\ub85c \uc5c5\uadf8\ub808\uc774\ub4dc \ud558\uba74 \uae30\ubcf8\uc73c\ub85c \uc0ac\uc6a9\ub429\ub2c8\ub2e4. \n<P>\uc0c8 \ucef4\ud30c\uc77c\ub7ec\uc5d0\uc11c \uad00\ub9ac \ucf54\ub4dc\ub97c \ud14c\uc2a4\ud2b8 \ud574\ubcf4\uae30 \uc704\ud574 \uc9c0\ub09c 2005\ub144 4\uc6d4\ud638\uc758 \uae30\uc0ac \"Wrappers: Use Our ManWrap Library to Get the Best of .NET in Native C++ Code\"\uc758 ManWrap \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \uc0ac\uc6a9 \ud574\ubcf4\uc558\uc2b5\ub2c8\ub2e4. ManWrap \uc740 wrapper DLL (regexWrap.dll)\uacfc RegexText, RegexForm \uadf8\ub9ac\uace0 WordMess \ud14c\uc2a4\ud2b8 \ud504\ub85c\uadf8\ub7a8\uc73c\ub85c \uad6c\uc131 \ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. (\uadf8\ub9bc 1 \ucc38\uc870) ManWrap\uc740 \uc791\uc73c\uba74\uc11c \uc218\ud589\ud558\ub294 \uc77c\uc774 - \uad00\ub9ac\/\ube44\uad00\ub9ac(Managed\/Unmanaged) \ucf54\ub4dc\ub97c \ud55c DLL\uc5d0 \ub123\uc74c\uc73c\ub85c - \uaf64 \ubcf5\uc7a1\ud55c \ud3b8\uc774\ub77c \uc774 \uae00\uc5d0 \uc0ac\uc6a9\ud558\uae30\uc5d0 \uc88b\uc740 \uc608\uc81c\ub77c \ud310\ub2e8\uc774 \ub429\ub2c8\ub2e4. RegexWrap \uc740 \uacf5\uc6a9 \uc5b8\uc5b4 \ub7f0\ud0c0\uc784(CLR)\uc758 Regex \ud074\ub798\uc2a4\ub97c wrapping \ud558\ub294 \ub124\uc774\ud2f0\ube0c DLL \uc785\ub2c8\ub2e4. \n<P><a class=\"con_link\" href=\"http:\/\/digitalangelmaster.files.wordpress.com\/2008\/02\/clip-image0021.gif\" target=\"_blank\" _cssquery_UID=\"73\" rel=\"noopener\"><IMG style=\"CURSOR: pointer\" onclick=\"popview(this, '90000003_000000000000000DFB4A834E')\" src=\"http:\/\/digitalangelmaster.files.wordpress.com\/2008\/02\/clip-image002-thumb1.gif?w=420&amp;h=281\" height=281><\/A><br \/>\uadf8\ub9bc 1 \uad00\ub9ac \ucf54\ub4dc \ud14c\uc2a4\ud2b8 \ud558\uae30 \n<P>\uae30 \uc874\uc758 \uad6c\ubb38\uc744 \uadf8\ub300\ub85c \ub450\uace0 \ucef4\ud30c\uc77c\ub7ec\ub97c \ub3cc\ub838\uc2b5\ub2c8\ub2e4. \uace7\ubc14\ub85c \uc2a4\ud06c\ub9b0\uc5d0\ub294 \ub2e4\uc74c\uacfc \uac19\uc740 \uc5d0\ub7ec \uba54\uc2dc\uc9c0\ub4e4\uc774 \uc8fd \uc62c\ub77c \uc654\uace0\uc694. \"C3395 \u2026 __declspec(dllexport)\ub97c __clrcall \ud638\ucd9c \uaddc\uce59\uc774 \uc788\ub294 \ud568\uc218\uc5d0 \uc801\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.\" \ubb50\uc2dc\ub77c\uace0? \n<P>ManWrap\uc740 \uc21c\uc218 \ub124\uc774\ud2f0\ube0c C++ \ucf54\ub4dc\uc5d0 \uad00\ub9ac \ud074\ub798\uc2a4\ub97c wrapping \ud560 \uc218 \uc788\uac8c \ud574\uc8fc\ub294 \ub77c\uc774\ube0c\ub7ec\ub9ac \uc785\ub2c8\ub2e4. \/clr \uc635\uc158 \uc5c6\uc774\ub3c4 \ub124\uc774\ud2f0\ube0c C++ \ucf54\ub4dc\uc5d0\uc11c CLR\uc744 \ud638\ucd9c \ud560 \uc218 \uc788\uac8c \ud574 \uc8fc\ub294 \uac83\uc774\uc8e0. \uc608\ub97c \ub4e4\uc5b4 Visual C++\u00ae 6.0 \ucef4\ud30c\uc77c\ub7ec\ub97c \uc0ac\uc6a9\ud558\ub294 \uae30\uc874\uc758 \ud504\ub85c\uadf8\ub7a8\uc774 \uc788\ub294\ub370 CLR \uc744 \uc0ac\uc6a9\ud558\ub294 \ud2b9\uc815 \uae30\ub2a5\uc744 \ucd94\uac00 \ud558\uace0\uc790 \ud55c\ub2e4\uace0 \ud569\uc2dc\ub2e4. \/clr \uc635\uc158\uc744 \uc0ac\uc6a9\ud558\uc9c0 \uc54a\uace0\ub294 C++\uc5d0\uc11c \uad00\ub9ac \ud074\ub798\uc2a4\ub97c \uc9c1\uc811 \ud638\ucd9c \ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. (Visual C++ 6.0 \uc740 \uc774 \uc635\uc158\uc744 \uc9c0\uc6d0 \ud558\uc9c0\ub3c4 \uc54a\uc2b5\ub2c8\ub2e4.) \ub530\ub77c\uc11c \uad00\ub9ac \ud074\ub798\uc2a4\ub97c \ud638\ucd9c \ud558\uae30 \uc704\ud574\uc11c\ub294 \uc774\ub97c \ub124\uc774\ud2f0\ube0c entry point\uac00 \uc788\ub294 DLL\uc5d0 wrapping \ud558\ub294 \ubc29\ubc95\uc744 \uc0ac\uc6a9 \ud574\uc57c \ud569\ub2c8\ub2e4. \n<P>ManWrap \uc774 \uc0ac\uc6a9\ud558\ub294 \uaf3c\uc218\ub294 _MANAGED \ub77c\ub294 \ubbf8\ub9ac \uc815\uc758\ub41c \uc804\ucc98\ub9ac \uc2ec\ubcfc\uc744 \uc774\uc6a9\ud558\uc5ec \ub0b4\ubd80 \uc0ac\uc6a9\uc774\ub098 \uc678\ubd80 \uc0ac\uc6a9\uc5d0 \ub530\ub77c \ub2e4\ub978 \ucf54\ub4dc\ub97c \uc0dd\uc131 \ud558\uac8c \ud558\ub294 \ubc29\ubc95 \uc785\ub2c8\ub2e4. \uac01 wrapper \ud074\ub798\uc2a4\ub294 \ud55c \uac1c\uc758 \ub370\uc774\ud130 \uba64\ubc84 \u2013 \uad00\ub9ac \uac1d\uccb4\uc758 \ud578\ub4e4 - \ub97c \uac16\uc2b5\ub2c8\ub2e4: \n<P>#ifdef _MANAGED \n<P># define GCHANDLE(T) gcroot&lt;T*&gt; \n<P>#else \n<P># define GCHANDLE(T) intptr_t \n<P>#endif \n<P>Wrapper \ud074\ub798\uc2a4\ub4e4\uc740 GCHANDLE\uc744 \uc774\uc6a9\ud574 \uac1d\uccb4 \ud578\ub4e4\uc744 \ub2e4\uc74c\uacfc \uac19\uc774 \uc120\uc5b8 \ud569\ub2c8\ub2e4: \n<P>\/\/ wrapper for managed Object \n<P>class CMObject {<br \/>\n<BLOCKQUOTE>\n<P>GCHANDLE(Object) m_handle;<\/P><\/BLOCKQUOTE>\n<P>}; \n<P>CMObject\uac00 \uc815\uc758\ub41c \ud5e4\ub354 \ud30c\uc77c\uc740 \ub450 \uac00\uc9c0 \ubc29\ubc95\uc73c\ub85c \ucef4\ud30c\uc77c \ub429\ub2c8\ub2e4. Wapper DLL\uc744 \ube4c\ub4dc \ud560 \ub54c\uc5d0\ub294 _MANAGED \uac00 \uc815\uc758 \ub418\ub3c4\ub85d \/clr \uc635\uc158\uc744 \uc8fc\uace0 \ucef4\ud30c\uc77c \ud558\uba74 \ucef4\ud30c\uc77c\ub7ec\ub294 m_handle \uc744 gcroot&lt;Object*&gt;\ub85c \ud310\ub2e8 \ud558\uac8c \ub429\ub2c8\ub2e4. Wrapper\ub97c \ud638\ucd9c \ud558\ub294 \ub124\uc774\ud2f0\ube0c \ud504\ub85c\uadf8\ub7a8\uc744 \ube4c\ub4dc \ud560 \ub54c\uc5d0\ub294 _MANAGED \uac00 \uc815\uc758 \ub418\uc9c0 \uc54a\ub3c4\ub85d \/clr \uc635\uc158\uc774 \uc5c6\uc774 \ucef4\ud30c\uc77c \ud558\uace0 \uc774\ub54c \ucef4\ud30c\uc77c\ub7ec\ub294 m_handle\uc744 intptr_t\ub85c \ud310\ub2e8 \ud569\ub2c8\ub2e4. \uc774\uac8c \uc81c\ub300\ub85c \uc791\ub3d9 \ud558\ub294 \uc774\uc720\ub294 gcroot&lt;Object*&gt;\uac00 intptr_t \uc640 \ub3d9\uc77c\ud55c \ud06c\uae30\ub97c \uac16\ub294\ub2e4\ub294 \uac83\uc774 \ubcf4\uc7a5 \ub418\uae30 \ub54c\ubb38\uc785\ub2c8\ub2e4. Wrapper DLL \ub9cc\uc774 \uadf8 \ud578\ub4e4\uc774 \ubb34\uc5c7\uc778\uc9c0 \uc54c \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ubc14\uae65 (\ub124\uc774\ud2f0\ube0c) \uc5d0\uc11c \ubd24\uc744 \ub550 m_handle \uc740 HWND, HINSTANCE\ub098 \ub2e4\ub978 \ud578\ub4e4\uacfc \ube44\uc2b7\ud55c \ub9e4\uc9c1 \ucfe0\ud0a4\uc5d0 \uc9c0\ub098\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \ub2e8\uc9c0 \uc5ec\uae30\uc11c \uc8fc\uc758 \ud560 \uc810\uc740 \ubcf5\uc0ac \uc0dd\uc131\uc790\uc640 \ub300\uc785 \uc5f0\uc0b0\uc790\uac00 \uc778\ub77c\uc778 \ud568\uc218\uac00 \uc544\ub2cc \uc2e4\uc81c \ud568\uc218\uc774\uc5b4\uc57c \ud55c\ub2e4\ub294 \uac83\uc785\ub2c8\ub2e4. \uadf8\ub798\uc57c \uc2e4\uc81c wrapper\ub85c \ud638\ucd9c\uc774 \ub4e4\uc5b4\uac00\uc11c \uadf8 \ud578\ub4e4\uc744 \uc2e4\uc81c \uac1d\uccb4\ub85c \ubcf4\uace0 \ub2e4\ub8e8\uac8c \ub429\ub2c8\ub2e4. (intptr_t \ud578\ub4e4\uc744 \ubcf5\uc0ac \ud558\uba74 \uc548\ub418\uace0 gcroot\ub97c \ud1b5\ud574\uc57c \ud569\ub2c8\ub2e4.) \n<P>\uc774 \ud578\ub4e4\uc744 \uac16\uace0 \uc788\ub294 \uac83\uacfc \ub354\ubd88\uc5b4 ManWrap\uc740 \uac1d\uccb4\ub97c \uc0dd\uc131\ud558\uace0 \ubcf5\uc0ac\ud558\ub294 \ud568\uc218\ub4e4\uc744 \uc815\uc758 \ud569\ub2c8\ub2e4. \ub610\ud55c \uac01 Wrapper \ud074\ub798\uc2a4\ub294 ctor \uc640 -&gt; \uc5f0\uc0b0\uc790\ub97c \uc815\uc758 \ud558\uc5ec wrapper\uac00 \ud574\ub2f9 \uad00\ub9ac \ud615\uc73c\ub85c\ubd80\ud130 \ub124\uc774\ud2f0\ube0c wrapper \uac1d\uccb4 \ub4e4\uc744 \uc0dd\uc131 \ud558\uace0 \uc811\uadfc\ud560 \uc218 \uc788\uac8c \uae08 \ud569\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4 \uad00\ub9ac Regex \uc5d0\uc11c \ub124\uc774\ud2f0\ube0c CMRegex\ub97c \uc0dd\uc131 \ud558\ub294 \uc0dd\uc131\uc790\uac00 \uc788\uc2b5\ub2c8\ub2e4. \uad00\ub9ac \ud074\ub798\uc2a4\ub4e4\uc740 ctor\uc640 -&gt; \uc5f0\uc0b0\uc790\ub97c \ub0b4\ubd80\uc801\uc73c\ub85c \uc0ac\uc6a9\ud569\ub2c8\ub2e4. <a class=\"con_link\" href=\"http:\/\/www.microsoft.com\/korea\/msdn\/msdnmag\/issues\/06\/06\/CAtWork\/default.aspx?fig=true#fig2\" target=\"_blank\" rel=\"noopener\"><FONT color=#0018a0>\uadf8\ub9bc 2<\/FONT><\/A> \uc5d0\uc11c ManWrap.h\uc758 \uc77c\ubd80 \ucf54\ub4dc\ub97c \ubcf4\uc2e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uad00\ub9ac Method\ub4e4\uc774 #ifdef _MANAGED \uc548\uc5d0 \uc788\ub294 \uac83\ub3c4 \ubcf4\uc2e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \n<P>\uadf8\ub9ac\uace0 \ud074\ub798\uc2a4 \uc804\uccb4\uac00 WREXPORT\ub85c \uc775\uc2a4\ud3ec\ud2b8 \ub418\uc5b4 \uc788\ub294\ub370 \uc774 \ub54c\ubb38\uc5d0 C3395 \uc5d0\ub7ec\uac00 \ub098\ub294 \uac83 \uc785\ub2c8\ub2e4. \ub124\uc774\ud2f0\ube0c \ud568\uc218\uc640 \uad00\ub9ac \ud568\uc218\ub4e4\uc740 \uc11c\ub85c \ub2e4\ub978 \ud638\ucd9c \uaddc\uc57d\uc744 \uc0ac\uc6a9\ud558\uae30 \ub54c\ubb38\uc5d0 __declspec(dllexport)\ub97c \uc774\uc6a9\ud574 \uad00\ub9ac method(\uad00\ub9ac \uc778\uc790 \ub4e4\uc744 \uac16\uace0 \uc788\ub294 method\ub4e4)\ub4e4\uc744 \uc775\uc2a4\ud3ec\ud2b8 \ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \ucda9\ubd84\ud788 \ub9d0\uc774 \ub418\ub294 \ub9d0\uc774\uc8e0. \ub124\uc774\ud2f0\ube0c DLL\uc5d0\uc11c \uad00\ub9ac \ud568\uc218\ub4e4\uc744 \uc775\uc2a4\ud3ec\ud2b8 \ud558\ub824\ub294 \uac83 \uc790\uccb4\uac00 \uc774\uc0c1\ud558\ub2c8\uae4c\uc694. \uadf8\ub7ec\ub098 \uc774\ub294 \uc2e4\uc81c\ub85c \uc775\uc2a4\ud3ec\ud2b8 \ud558\ub294 \uac83\uc774 \uc544\ub2d9\ub2c8\ub2e4. \uc774\ub4e4\uc740 \ubaa8\ub450 \uc778\ub77c\uc778\uc73c\ub85c \uc815\uc758 \ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \uad00\ub9ac method \ub4e4\uc740 \ub124\uc774\ud2f0\ube0c interface\uc5d0 \ud544\uc694\ud558\uc9c0\ub3c4 \uc54a\uace0 \ubcf4\uc774\uc9c0\ub3c4 \uc54a\uc2b5\ub2c8\ub2e4. \uadf8\ub7ec\ub098 \ucef4\ud30c\uc77c\ub7ec\ub294 \uc774\ub97c \ubaa8\ub985\ub2c8\ub2e4. Visual Studio 2005\uac00 \uc774\uc804 \ucef4\ud30c\uc77c\ub7ec\ub9cc\ud07c \ub611\ub611 \ud558\uc9c0 \uc54a\uc544 \ud074\ub798\uc2a4 \uc804\uccb4\ub97c \uc775\uc2a4\ud3ec\ud2b8 \ud560 \uc218 \uc788\uac8c \ud5c8\uc6a9 \ud55c \uac83\uc73c\ub85c \ubcf4\uc785\ub2c8\ub2e4. \uc544\ub2c8\ub77c\uba74 \ub108\ubb34 \ub611\ub611 \ud558\uc5ec \uad00\ub9ac method\ub97c \ub124\uc774\ud2b8\ube0c \ucf54\ub4dc\uc5d0\uc11c \uc775\uc2a4\ud3ec\ud2b8 \ud55c\ub2e4\ub294 \uac83 \uc790\uccb4\uac00 \ub9d0\uc774 \uc548\ub41c\ub2e4\uace0 \ud310\ub2e8 \ud558\ub294 \uac74\uc9c0.. \uc5b4\uca0c\ub4e0 Visual Studio 2005\ub294 \uad00\ub9ac method\ub97c \uac16\ub294 \ud074\ub798\uc2a4\uac00 \uc775\uc2a4\ud3ec\ud2b8 \ub418\ub294 \uac83\uc744 \ud5c8\uc6a9\ud558\uc9c0 \uc54a\ub294\ub2e4\ub294 \uac83\uc785\ub2c8\ub2e4. \n<P>\uadf8\ub7fc \uc774\uc81c \uc5b4\ub5bb\uac8c \ud560\uae4c\uc694? \uc81c\uac00 \ucef4\ud30c\uc77c\ub7ec\uc5d0\uac8c \uba85\ub839\ud558\uace0 \uc2f6\uc740 \uac83\uc740, \"\ud074\ub798\uc2a4 \uc804\uccb4\ub97c \uc775\uc2a4\ud3ec\ud2b8 \ud558\ub418 \uc774 \uc138 method \ub4e4\ub9cc\uc740 \uc81c\uc678 \uc2dc\ucf1c\ub77c.\" \uc785\ub2c8\ub2e4. \ub2e4\uc2dc \ub9d0\ud574 \ud2b9\uc815 method \uc5d0 \ub300\ud574\uc11c __declspec(dllexport)\ub97c \uc801\uc6a9 \uc548\ub418\uac8c \ud558\ub294 \ubc29\ubc95\uc744 \uc6d0\ud558\ub294 \uac83\uc774\uc8e0. \uc774\ub7f0, \uadf8\ub7f0 \uc635\uc158\uc740 \uc874\uc7ac \ud558\uc9c0 \uc54a\ub294 \uad70\uc694. \ub530\ub77c\uc11c \uc774\ub97c \ud574\uacb0 \ud560 \uc218 \uc788\ub294 \ubc29\ubc95\uc73c\ub85c \ub450 \uac00\uc9c0\uac00 \uc788\uc2b5\ub2c8\ub2e4. : WREXPORT\ub97c \ud074\ub798\uc2a4 \uc120\uc5b8\uc5d0\uc11c \uc81c\uac70 \ud558\uace0 \uc774\ub97c \uac01 \ub124\uc774\ud2f0\ube0c method \uc55e\uc5d0 \ubd99\uc774\uac70\ub098 \ubb38\uc81c\ub97c \uc77c\uc73c\ud0a4\ub294 method \ub4e4\uc744 \uc644\uc804\ud788 \uc81c\uac70 \ud558\ub294 \ubc29\ubc95\uc785\ub2c8\ub2e4. \uccab \ubc88\uc9f8 \ubc29\ubc95\uc774 \ub354 \uac04\ub2e8 \ud558\uc5ec \uc804 \uc774 \ubc29\ubc95\uc744 \ud0dd\ud588\uc2b5\ub2c8\ub2e4. WREXPORT\ub97c method \uc120\uc5b8\uc73c\ub85c \uc62e\uae30\ub294 \uac83\uc774 \uc880 \ubc18\ubcf5\uc801\uc774\uace0 \uc0c8 method\ub97c \ucd94\uac00 \ud560 \ub54c WREXPORT\ub97c \ucd94\uac00 \ud558\ub294 \uac83\uc744 \uc78a\uc5b4 \ubc84\ub824 \uc2e4\uc218 \ud560 \uc5ec\uc9c0\uac00 \ub9ce\uc774 \ubcf4\uc774\uc9c0\ub9cc \ucef4\ud30c\uc77c\ub7ec\uac00 \uc54c\uc544\uc11c \uc54c\ub824 \uc8fc\uaca0\uc8e0. \n<P>\ub450 \ubc88\uc9f8 \ubc29\ubc95\uc73c\ub85c \uc815\ub9d0, \uaf2d \ud074\ub798\uc2a4 \uc804\uccb4\ub97c \uc775\uc2a4\ud3ec\ud2b8 \ud558\uace0 \uc2f6\ub2e4\uba74 \ubb38\uc81c\uac00 \ub418\ub294 \uad00\ub9ac \ubcf5\uc0ac \uc0dd\uc131\uc790\uc640 -&gt; \uc5f0\uc0b0\uc790method \ub4e4\uc744 \ubaa8\ub450 \uc81c\uac70 \ud558\ub294 \uac83\uc785\ub2c8\ub2e4. \uadf8\ub807\uac8c \ud558\uba74 -&gt; \uc5f0\uc0b0\uc790\ub97c \uc790\ub3d9\uc73c\ub85c \ud638\ucd9c \ud558\ub294 \ub2e4\uc74c\uacfc \uac19\uc740 \ucf54\ub4dc \ub300\uc2e0\uc5d0 \n<P>\/\/ MClass\uc758 \ub0b4\ubd80 wrapper \ud074\ub798\uc2a4 \n<P>(*this)-&gt;ManagedMethod(); \n<P>\ub2e4\uc74c\uacfc \uac19\uc774 \ucf54\ub4dc\ub97c \uc791\uc131 \ud574\uc8fc\uc154\uc57c \ud569\ub2c8\ub2e4: \n<P>(static_cast&lt;MClass*&gt;((Object*)m_handle))-&gt;ManagedMethod(); \n<P>\uc815\ub9d0 \uae41\ub2c8\ub2e4. \ub2e4\uc74c\uacfc \uac19\uc740 \ub9e4\ud06c\ub85c\ub97c \uc0ac\uc6a9\ud558\uba74 \ud0c0\uc774\ud551\uc744 \uc880 \ub35c \uc218 \uc788\uaca0\ub124\uc694: \n<P>THISOBJ(MClass*)-&gt;ManagedMethod(); \n<P>\uc774\ub807\uac8c \ud574\ub3c4 \uc57d\uac04\uc740 \uac70\ucd94\uc7a5\uc2a4\ub7fd\uac70\ub2c8\uc640 \uc544\uc9c1 \uc0dd\uc131\uc790\ub3c4 \uc9c1\uc811 \uac74\ub4dc\ub824 \uc8fc\uc154\uc57c \ud569\ub2c8\ub2e4. \uc9c0\uae08 \uc124\uba85\uc774 \uc798 \uc548 \uc640 \ub2ff\ub294 \ub2e4\uba74(\ub9ce\uc740 \ub3c5\uc790 \ubd84\ub4e4\uc774 \uadf8\ub7ec\uc2dc\ub9ac\ub77c \uc0dd\uac01 \ub429\ub2c8\ub2e4.) \uac71\uc815 \ub9c8\uc2dc\ub77c. \uc804 \uc880\ub354 \uac04\ub2e8\ud55c \ubc29\ubc95\uc778 \uccab \ubc88\uc9f8 \ubc29\ubc95\uc744 \ud0dd\ud588\uc2b5\ub2c8\ub2e4. <a class=\"con_link\" href=\"http:\/\/www.microsoft.com\/korea\/msdn\/msdnmag\/issues\/06\/06\/CAtWork\/default.aspx?fig=true#fig3\" target=\"_blank\" rel=\"noopener\"><FONT color=#0018a0>\uadf8\ub9bc 3<\/FONT><\/A>\uc744 \ubcf4\uc2dc\uba74 WREXPORT\ub97c \ubaa8\ub4e0 method\uc5d0 \ucd94\uac00\ud55c \uc218\uc815\ub41c \ucf54\ub4dc\ub97c \ubcf4\uc2e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ub807\uac8c \uc218\uc815 \ud55c \ud6c4\uc5d4 ManWrap\uc740 \ubb38\uc81c \uc5c6\uc774 \ucef4\ud30c\uc77c \ub429\ub2c8\ub2e4. \n<P>\n<P>ManWrap \uc2e4\ud589 \ud558\uae30 \n<P>\ucf54\ub4dc\ub97c \uc81c\ub300\ub85c \ucef4\ud30c\uc77c \ub418\uac8c \ud558\uc600\ub294\ub370 \uc774\uc820 \uc774 \ucf54\ub4dc\uac00 \uc81c\ub300\ub85c \uc2e4\ud589 \ub418\uac8c \ud574\uc57c \ud569\ub2c8\ub2e4. \uc774 \ubd80\ubd84\uc774 \ub9c9\ud614\ub358 \ubd80\ubd84 \uc785\ub2c8\ub2e4. dbgheap.c \uc18d \uae4a\uc740 \uacf3\uc758 ASSERT \ud3ed\ud0c4 \uc785\ub2c8\ub2e4: \n<P>ASSERTE(_CrtIsValidHeapPointer(pUserData)); \n<P>\uc73c\uc545! \ub514\ubc84\uadf8 \uc2ec\ubcfc \uc5c6\uc774 \uc2dc\uc2a4\ud15c DLL\ub9cc \uc794\ub729 \ubcf4\uc5ec\uc8fc\ub294 stack trace\ub294 \uac70\uc758 \uc4f8\ubaa8\uac00 \uc5c6\uc5c8\uc2b5\ub2c8\ub2e4. \uc774\ub7f0 \ubc84\uadf8\uac00 \uac00\uc7a5 \ub098\uc058\uace0 \uac00\uc7a5 \ucd94\uc801\ud558\uae30 \ud798\ub4e0 \ubc84\uadf8\uc785\ub2c8\ub2e4. \ud504\ub85c\uadf8\ub7a8\uc774 \uc2dc\uc2a4\ud15c \ucf54\ub4dc \uae4a\uc740 \uacf3 \uc5b4\ub518\uac00\uc5d0\uc11c \uc8fd\uace0 \ubb34\uc5c7\uc774 \ubb38\uc81c\uc778\uc9c0 \uc2e4\ub9c8\ub9ac \uc870\ucc28 \uc5c6\ub294 \uacbd\uc6b0\uc8e0. \uadf8\ub798\ub3c4 \uc798 \ucc3e\uc73c\uba74 \uc2e4\ub9c8\ub9ac\ub294 \uc788\uc2b5\ub2c8\ub2e4. Stack trace\ub97c \uc880\ub354 \uc790\uc138\ud788 \ub4e4\uc5ec\ub2e4 \ubcf4\ub2c8 \uc57d 50 frame \uc55e\uc5d0 \uc81c \ucf54\ub4dc\uac00 g_Allocator\ub77c\ub294 \uc815\uc801 ATL \ubcc0\uc218\ub97c \uc811\uadfc\ud558\ub294 \uac83\uc774 \ubcf4\uc600\uc2b5\ub2c8\ub2e4. \uc544\ud558! \uc774\uac83\uc774 \ubc14\ub85c \uc774 \ubb38\uc81c \ud574\uacb0\uc758 \uc2e4\ub9c8\ub9ac \uc600\uc2b5\ub2c8\ub2e4. \n<P>g_Allocator\ub294 \uc804\uc5ed\uc73c\ub85c \uc120\uc5b8\ub41c \uc815\uc801 \ubcc0\uc218 \uc785\ub2c8\ub2e4. C++\uc5d0\uc11c \uc815\uc801 \ubcc0\uc218 \ucd08\uae30\ud654\ub294 \uc5b8\uc81c\ub098 \uc12c\uc138\ud558\uac8c \ub2e4\ub8e8\uc5b4\uc57c \ud558\ub294 \uc77c\uc911 \ud558\ub098\ub85c DLL\uc5d0\uc11c \ud2b9\ubcc4\ud788 \ub354\uc6b1 \uadf8\ub807\uc2b5\ub2c8\ub2e4. \ucef4\ud30c\uc77c\ub7ec\ub294 DllMain\uc744 \ud638\ucd9c \ud558\uae30 \uc804\uc5d0 \uc815\uc801 \ubcc0\uc218\ub4e4\uc744 \ucd08\uae30\ud654 \ud558\ub294 CRT \ucd08\uae30\ud654 \ud568\uc218\ub97c \ud638\ucd9c\ud558\ub3c4\ub85d \ucf54\ub4dc\ub97c \uc0dd\uc131 \ud569\ub2c8\ub2e4. \ub124\uc774\ud2f0\ube0c \ub098\ub77c\uc5d0\uc11c\ub294 \ubaa8\ub4e0 \uac83\uc774 \uc798 \uc791\ub3d9 \ud558\ub098 \uc5ec\ub7ec\ubd84\uc758 DLL \uc774 \uad00\ub9ac \ud074\ub798\uc2a4\ub4e4\uc744 \ud638\ucd9c \ud55c\ub2e4\uba74 Loader-lock \ubb38\uc81c\uc5d0 \uac78\ub9b4 \uc218 \uc788\uc2b5\ub2c8\ub2e4: Windows\u00ae \ub294 \uc5ec\ub7ec\ubd84\uc758 DLL\uc744 \ub85c\ub4dc \ud558\ub824\uace0 \ud558\uace0 \uc774\ub294 CLR \uc744 \ub85c\ub4dc \ud558\ub824\uace0 \ud569\ub2c8\ub2e4. \uc774\ub294 \ub2e4\uc2dc \uc5ec\ub7ec\ubd84\uc758 DLL\uc744 \ub85c\ub4dc \ud558\ub824\uace0 \ud558\uace0 \u2013 \uc989, loader lock \uc774\ub77c\uace0 \uc54c\ub824\uc9c4 \ub370\ub4dc\ub77d \uc0c1\ud669\uc5d0 \ucc98\ud558\uac8c \ub418\ub294 \uac83\uc774\uc8e0. \uc77c\ubc18\uc801\uc73c\ub85c DLL\uc774 \ub85c\ub4dc \ub420 \ub54c\uc5d0 \ub2e4\ub978 DLL\uc744 \ub85c\ub4dc \ud558\uba74 \uc548\ub429\ub2c8\ub2e4. \ud754\ud558\uac8c \uacbd\ud5d8\ud560 \uc218 \uc788\ub294 \uc608\ub85c\ub294 DllMain \ub610\ub294 \uc815\uc801 \uac1d\uccb4 \uc0dd\uc131\uc790\uc5d0\uc11c ::MessageBox\ub97c \ud638\ucd9c\ud558\uc5ec \uc9c4\ub2e8 \uba54\uc2dc\uc9c0\ub97c \ud45c\uc2dc\ud560 \uacbd\uc6b0\uc785\ub2c8\ub2e4. \uc774\ub807\uac8c\ub294 \uacb0\ucf54 \uc81c\ub300\ub85c \uc791\ub3d9 \ud558\uc9c0 \uc54a\uc8e0. \n<P>\uc774 loader lock\uc744 \ud53c\ud558\uae30 \uc704\ud574 Visual Studio .NET 2003 \uc740 \uad00\ub9ac DLL\ub4e4\uc744 \/NOENTRY DLL(DllMain Entry point\uac00 \uc5c6\ub294 DLL)\ub85c \ub9cc\ub4dc\ub294 \uac83\uc744 \uc758\ubb34\ud654 \ud588\uc2b5\ub2c8\ub2e4. \uadf8 \uacb0\uacfc \uc5ec\ub7ec\ubd84\uc758 DLL\uc740 _DllMainCRTStartup\uc774 \uc5c6\uac8c \ub418\uc5b4 \uc815\uc801 \uc815\uc801 \ubcc0\uc218\ub4e4\uc774 \ucd08\uae30\ud654\uac00 \uc548\ub429\ub2c8\ub2e4. loader lock\uc740 \ud53c \ud560 \uc218 \uc788\uc9c0\ub9cc \ubcbc\ub8e9 \uc7a1\uc73c\ub824\ub2e4 \ucd08\uac00\uc0bc\uac04 \ub2e4 \ud0dc\uc6b0\ub294 \uaca9\uc774 \ub418\uc5b4 \ubc84\ub9b0 \uac70\uc8e0. \uc81c 2005\ub144 2\uc6d4 \uae30\uc0ac\uc5d0 \uc774 \uc218\uc218\uaed8\ub07c\uc5d0 \ub300\ud55c \uc790\uc138\ud55c \uc124\uba85\uc774 \uc788\uc2b5\ub2c8\ub2e4(<a class=\"con_link\" href=\"http:\/\/msdn.microsoft.com\/msdnmag\/issues\/05\/02\/CATWork\" target=\"_blank\" modo=\"false\" rel=\"noopener\"><FONT color=#0018a0>msdn.microsoft.com\/msdnmag\/issues\/05\/02\/CATWork (\uc601\ubb38)<\/FONT><\/A>). MFC\uc640 ATL \uc5d0\uc11c \uc815\uc801 \uac1d\uccb4\ub97c \uc0ac\uc6a9 \ud558\uae30 \ub54c\ubb38\uc5d0 \uc774\ub294 \uc911\uc694\ud55c \ubb38\uc81c\uc785\ub2c8\ub2e4. DllMain \uc5c6\uc774\ub294 ATL \ub610\ub294 MFC\ub97c \uc0ac\uc6a9\ud558\ub294 \ud63c\ud569 DLL \uc744 \ub9cc\ub4e4 \uc218 \uc5c6\uc73c\ub2c8\uae4c\uc694. \uc774 \ubb38\uc81c\ub97c \ud574\uacb0 \ud558\uae30 \uc704\ud574 \uce5c\uc808\ud55c Redmond \uc0ac\ub78c\ub4e4\uc740 __crt_dll_initialize \uc640 __crt_dll_terminate()\uac00 \ub4e4\uc5b4 \uc788\ub294 &lt;_vcclrit.h&gt;\ub97c \ub9cc\ub4e4\uc5b4 \uc81c\uacf5 \ud588\uc2b5\ub2c8\ub2e4. \n<P>\uc774 \ubaa8\ub4e0 \uac83\ub4e4\uc774 \uadf8\ub0e5 \uac70\ucd94\uc7a5\uc2a4\ub7fd\uac8c\ub9cc \ub4e4\ub9ac\uc2e4 \uac81\ub2c8\ub2e4. \ubc18\uac11\uac8c\ub3c4 Visual Studio 2005\ub294 \ud63c\ud569 assembly loader-lock \ubb38\uc81c\ub97c \ud574\uacb0\ud574 \ucd9c\uc2dc \ub418\uc5c8\uc2b5\ub2c8\ub2e4. \ub354 \uc774\uc0c1 _vcclrit.h \ub098 \/NOENTRY \uac00 \uc5c6\uc774 \ud63c\ud569 DLL \ub4e4\uc744 \ud3c9\uc18c \ub300\ub85c \ucef4\ud30c\uc77c \ud558\uc2e4 \uc218 \uc788\uac8c \ub418\uc5c8\uc2b5\ub2c8\ub2e4. \ub354 \uc790\uc138\ud55c \uc124\uba85\uc740 \"<a class=\"con_link\" href=\"http:\/\/msdn2.microsoft.com\/ko-kr\/library\/ms173266%28vs.80%29.aspx\" target=\"_blank\" modo=\"false\" rel=\"noopener\"><FONT color=#0018a0>http:\/\/msdn2.microsoft.com\/ko-kr\/library\/ms173266(vs.80).aspx<\/FONT><\/A>\" \uc5d0 \"\ud63c\ud569 \uc5b4\uc148\ube14\ub9ac \ucd08\uae30\ud654 \" \uae00\uc744 \ucc38\uc870 \ud574\ubcf4\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4. \n<P>\uadf8\ub7ec\uba74 \uc65c ManWrap\uc774 dbgheap.c \uc5d0\uc11c \uc8fd\uc5c8\uc744 \uae4c\uc694? \uc774 \uc774\uc720\ub294 \uc774\uc804 \ud504\ub85c\uc81d\ud2b8\uc758 \/NOENTRY \uac00 \uc544\uc9c1 \ub0a8\uc544 \uc788\uc5c8\uae30 \ub54c\ubb38\uc785\ub2c8\ub2e4. \ub2f9\uc5f0\ud788 \uc8fd\uc744 \uc0c1\ud669\uc774 \uc600\uc8e0. DllMain\ub3c4 \uc5c6\uc5c8\uc73c\uba70 \ub530\ub77c\uc11c ATL\uc758 g_Allocator\uac00 \ucd08\uae30\ud654 \ub418\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4. \uadf8\ub798\uc11c \ubc14\ub85c \/NOENTRY\ub97c \uc5c6\uc560\ub2c8, \ud734! \uc81c\ub300\ub85c \uc791\ub3d9 \ud558\ub294 \uad70\uc694. \n<P>\n<P>\uc0c8 \ubaa8\uc790(hat)\ub85c \uc0c8\ub85c \uc2dc\uc791 \n<P>\uc774 \ub7f0 \uc5b4\ub824\uc6b4 \ubc84\uadf8\ub4e4\ub85c\ubd80\ud130 \uc5bb\uc744 \uc218 \uc788\ub294 \ucd95\ubcf5 \uc774\ub77c\uba74 \uadf8 \ubc84\uadf8\ub97c \uace0\uce5c \ud6c4 \ub9db \ubcfc \uc218 \uc788\ub294 \ub0a0\uc544 \uac08 \uac83 \uac19\uc740 \uc88b\uc740 \uae30\ubd84 \uc77c \uac81\ub2c8\ub2e4. ManWrap\uc758 \uc138 test \ud504\ub85c\uadf8\ub7a8(RegexTest, RegexForm, and WordMess) \uc744 \uc131\uacf5\uc801\uc73c\ub85c \ucef4\ud30c\uc77c \ud558\uace0 \uc2e4\ud589 \uc2dc\ud0a8 \ud6c4 \uc804 \uaf64\ub098 \uc2f1\uae00 \ubc99\uae00 \ud588\uc8e0. \uc9c0\ub09c \uba87 \ub144\uac04\uc744 \uaca8\uc6b8\uc7a0\uc744 \uc790\uace0 \uc624\uc2e0 \ubd84\uc744 \uc704\ud574 \uc124\uba85 \ub4dc\ub9ac\uc790\uba74 C++\/CLI\uc758 \ud575\uc2ec\uc740 ^(hat) \uc2ec\ubcfc\ub85c \ud45c\uc2dc \ub418\ub294 tracking handle \uc774\ub77c\ub294 \uc0c8 \ud0c0\uc785\uc774\ub77c\uace0 \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uadf8\ub798\uc11c \uc800\ub294 \/clr:oldSyntax(\uadf8\ub9bc 4 \ucc38\uc870)\ub97c \uc5c6\uc560\uace0 ManWrap.h\uc758 * \ub97c ^ \ub85c \ubcc0\uacbd \ud588\uc2b5\ub2c8\ub2e4: \n<P>#ifdef _MANAGED \n<P># define GCHANDLE(T) gcroot&lt;T^&gt; \n<P>#else \n<P># define GCHANDLE(T) intptr_t \n<P>#endif \n<P><a class=\"con_link\" href=\"http:\/\/digitalangelmaster.files.wordpress.com\/2008\/02\/clip-image0033.gif\" target=\"_blank\" _cssquery_UID=\"75\" rel=\"noopener\"><IMG style=\"CURSOR: pointer\" onclick=\"popview(this, '90000003_000000000000000DFB4A834E')\" src=\"http:\/\/digitalangelmaster.files.wordpress.com\/2008\/02\/clip-image003-thumb.gif?w=420&amp;h=294\" height=294><\/A><br \/>\uadf8\ub9bc 4 \uc0c8\ub85c\uc6b4 \uad6c\ubb38 \uc0ac\uc6a9\ud558\uae30 \n<P>\uc774 \ub807\uac8c \ud558\uc5ec \ubcc0\uacbd\ud558\uace0 \ucef4\ud30c\uc77c \ud55c \uc774\ud6c4 \ucef4\ud30c\uc77c\ub7ec\uac00 \ubc49\uc5b4 \ub0b4\ub294 \uc5d0\ub7ec\ub97c \ud558\ub098\uc529 \uace0\uccd0 \ub098\uac14\uc2b5\ub2c8\ub2e4. \ub300\ubd80\ubd84\uc758 \uc5d0\ub7ec\ub294 Mumble *\ub97c Mumble ^\ub85c \uace0\uce58\ub294 \uc815\ub3c4 \uc600\uc8e0. \ubb3c\ub860 \uace0\uccd0\uc57c \ud558\ub294 \ub2e4\ub978 \uad6c\ubb38\ub4e4\ub3c4 \uc788\uc5c8\uc2b5\ub2c8\ub2e4. \ub2e4\uc74c\uc774 ManWarp\uc744 \ucef4\ud30c\uc77c \ud558\uba74\uc11c \ub098\uc628 \ud2b9\uc720\uc758 \uad6c\ubb38 \uc5d0\ub7ec \ubaa9\ub85d \uc785\ub2c8\ub2e4. C++\/CLI \uc5d0 \ub2a5\ud1b5\ud55c \ub3c5\uc790\ub4e4\uc5d0\uac90 \uc9c4\ubd80\ud574 \ubcf4\uc77c \uc9c0\ub3c4 \ubaa8\ub974\ub2c8 CLI \uc804\ubb38\uac00 \uc774\uc2e0 \ubd84\ub4e4\uc740 \uadf8\ub0e5 \ud6d1\uc5b4 \ubcf4\uc2dc\uace0 \ub118\uae30\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4. \n<P>\u2022 \uad00\ub9ac \ud074\ub798\uc2a4\ub4e4\uc740 \uc774\uc81c __gc \ub610\ub294 __value \ub300\uc2e0 ref \ub610\ub294 value\ub85c \uc120\uc5b8 \ub418\uc5b4\uc57c \ud569\ub2c8\ub2e4. \uc77c\ubc18\uc801\uc73c\ub85c \ubaa8\ub4e0 __managed \ud0a4\uc6cc\ub4dc\ub4e4\uc740 \ubb38\ub9e5\uc5d0 \ub354 \ub9de\ub294 \ud0a4\uc6cc\ub4dc\ub85c \uad50\uccb4 \ub418\uc5c8\uc2b5\ub2c8\ub2e4. \n<P>\u2022 Default \uc778\ub371\uc11c\ub4e4\uc740 \uc774\uc81c Item \ub300\uc2e0 \"default\" \ub85c \ubd88\ub9bd\ub2c8\ub2e4. \uc804\uc5d4 \uc774\ub7ac\ub358 \uac83\uc744: \n<P>x = m-&gt;Item[name]; \n<P>\uc774\uc820 \uc774\ub807\uac8c \ud574\uc57c \ud569\ub2c8\ub2e4: \n<P>x = m-&gt;default[i]; \n<P>\uc774\ub294 Regex \ub77c\uc774\ube0c\ub7ec\ub9ac\uc758 MatchCollection\uc5d0\uc11c\ucc98\ub7fc \ubcf5\uc218\uc758 \uc778\ub371\uc11c\ub4e4\uc774 \uc788\uc744 \ub54c\uc5d0\ub3c4 \uc791\ub3d9 \ud569\ub2c8\ub2e4. \n<P>MatchCollection* mc; \n<P>mc-&gt;default[0]; \/\/ int \n<P>mc-&gt;default[\"alpha\"]; \/\/ string \n<P>\u2022 \uad00\ub9ac \uac1d\uccb4\ub4e4\uc740 \uc774\uc81c gcnew\ub85c \ud560\ub2f9 \ub418\uc5b4\uc57c \ud569\ub2c8\ub2e4. \uad00\ub9ac \uac1d\uccb4\ub97c \ud560\ub2f9 \ud558\ub294 \uacf3\uc5d0\ub294 new\ub97c gcnew\ub85c \ubcc0\uacbd \ud558\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4. \n<P>\u2022 \uc5b4\ub5a4 \ubcc0\ud658 \ub4e4\uc740 \ub354 \uc774\uc0c1 \uc554\uc2dc\uc801\uc774\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \ub2e4\uc74c \ucf54\ub4dc\ub97c \ubcf4\uba74: \n<P>\/\/ \ub124\uc774\ud2f0\ube0c Entry \n<P>void Foo(LPCTSTR lpsz) \n<P>{<br \/>\n<BLOCKQUOTE>\n<P>\/\/ \uad00\ub9ac ctor \ub294 String\uc744 \ubc1b\ub294\ub2e4<\/P><\/BLOCKQUOTE>\n<BLOCKQUOTE>\n<P>Mumble *m = new Mumble(lpsz); <\/P><\/BLOCKQUOTE>\n<P>} \n<P>\uc774\uc804 Managed Extensions \uc5d0\uc11c\ub294 \ucef4\ud30c\uc77c\ub7ec\uac00 Mumble \uc744 \uc0dd\uc131 \ud558\uae30 \uc704\ud574 lpsz\ub85c \ucd08\uae30\ud654 \ud55c \uad00\ub9ac String \uac1d\uccb4\ub97c \uc554\uc2dc\uc801\uc73c\ub85c \uc0dd\uc131 \ud558\uc600\uc2b5\ub2c8\ub2e4. Visual Studio 2005 \uc5d0\uc11c\ub294 \ub2e4\uc74c\ucc98\ub7fc String\uc744 \uba85\uc2dc\uc801\uc73c\ub85c \ud560\ub2f9 \ud574\uc8fc\uc5b4\uc57c \ud569\ub2c8\ub2e4: \n<P>void Foo(LPCTSTR lpsz) \n<P>{<br \/>\n<BLOCKQUOTE>\n<P>Mumble ^m = gcnew Mumble(gcnew String(lpsz));<\/P><\/BLOCKQUOTE>\n<P>} \n<P>\uc57d\uac04\uc758 \ud0c0\uc774\ud551\uc774 \ub354 \ub4e4\uc5b4 \uac00\uc9c0\ub9cc \uc774\uc804 \ubcf4\ub2e4 \uc880\ub354 \uc758\ubbf8\uac00 \uba85\ub8cc \ud574\uc84c\uc2b5\ub2c8\ub2e4. \uc800\ub294 \uc5b8\uc81c \uc5b4\ub514\uc11c \uad00\ub9ac \ud799\uc5d0\uc11c \ud560\ub2f9 \ud558\ub294\uc9c0 \uc54c\uac8c \ud574\uc8fc\uae30 \ub54c\ubb38\uc5d0 gcnew\ub97c \uc88b\uc544 \ud569\ub2c8\ub2e4. \uc554\uc2dc\uc801 \ubcc0\ud658\uc740 \ucf54\ub4dc\ub97c \ub2e8\uc21c\ud558\uace0 \uae68\ub057\ud558\uac8c \ubcf4\uc774\uac8c \ud558\uc9c0\ub9cc, \uacbd\uc6b0\uc5d0 \ub530\ub77c\uc11c\ub294 \uc624\ud574\ub97c \uc0b4 \uc218 \uc788\uc744 \uc815\ub3c4\ub85c \uac04\uacb0\ud558\uae30 \ub54c\ubb38\uc785\ub2c8\ub2e4. C++\ub294 \uc0c1\ub300\uc801\uc73c\ub85c low-level \uc5b8\uc5b4\uc5d0 \uc18d\ud558\uba70(\uc804 \uc774\uc810\uc744 \uc88b\uc740 \uc810\uc774\ub77c \uc0dd\uac01 \ud569\ub2c8\ub2e4.) \ub530\ub77c\uc11c \ucf54\ub4dc \ub4b7\uba74\uc5d0\uc11c \ub9ce\uc740 \uc77c\uc744 \uc218\ud589 \ud558\uac8c \ud558\ub294 \uac83 \ubcf4\ub2e4 \ub208\uc5d0 \uc9c1\uc811 \ubcf4\uc774\uac8c \ud558\ub294 \uac83\uc774 \uc88b\uc2b5\ub2c8\ub2e4. RegexWrap\uc5d0\uc11c \uc5ec\uae30 \uc800\uae30\uc11c String\uc744 \uc0dd\uc131 \ud558\uae30 \ub54c\ubb38\uc5d0 \uc804 \ud0c0\uc774\ud551\uc744 \ub35c\uc5b4\uc8fc\uae30 \uc704\ud574 \ub2e4\uc74c\uc758 \ub9e4\ud06c\ub85c\ub97c \uc791\uc131 \ud588\uc2b5\ub2c8\ub2e4: \n<P>#define S(s) (gcnew String(s)) \n<P>S\"Hello, world.\" \uc5d0\uc11c\ucc98\ub7fc \uad00\ub9ac string\uc758 S modifier\ucc98\ub7fc \ub2ee\uc544 \ubcf4\uc774\uac8c \ub9cc\ub4e4\uc5b4 \ubcf4\uc558\uc2b5\ub2c8\ub2e4. \ub530\ub77c\uc11c \uc774\uc820 \ub2e4\uc74c\ucc98\ub7fc \uc4f8 \uc218 \uc788\uc2b5\ub2c8\ub2e4: \n<P>Mumble ^m = gcnew Mumble(S(lpsz)); \n<P>C++\/CLI \ub294 \uad00\ub9ac \ubc30\uc5f4\uc758 \uad6c\ubb38\uc774 \uc0c8\ub86d\uac8c \ubc14\ub00c\uc5c8\uc2b5\ub2c8\ub2e4. \uc544\ub798\uc758 \uc120\uc5b8 \ub300\uc2e0 \n<P>ManagedType* myarray[]; \n<P>\uc774\uc820 \uc774\ub807\uac8c \uc791\uc131\ud558\uc154\uc57c \ud569\ub2c8\ub2e4: \n<P>array &lt;ManagedType^&gt;^ myarray; \n<P>\uc804 \ub450 \ubc88\uc9f8 ^ \ub54c\ubb38\uc5d0 \ucc98\uc74c\uc5d4 \uc57d\uac04 \uc758\uc544\ud574 \ud588\uc5c8\uc2b5\ub2c8\ub2e4. \uadf8 \uac83\uc744 \ube7c\uace0 \ucef4\ud30c\uc77c \ud558\uba74 \"error C3149: \uc5ec\uae30\uc5d0 \uc774 \ud615\uc2dd\uc744 \uc0ac\uc6a9\ud558\ub824\uba74 \ucd5c\uc0c1\uc704 '^'\uc774(\uac00) \uc788\uc5b4\uc57c \ud569\ub2c8\ub2e4.\"\ub77c\ub294 \uc57d\uac04\uc740 \uc560\ub9e4\ud55c \uc5d0\ub7ec\uac00 \ub098\uc635\ub2c8\ub2e4(\ucd5c\uc0c1\uc704 \ubb50??). \uadf8\ub7ec\ub098 \uaddc\uce59\uc744 \uc774\ud574 \ud558\uc2dc\uba74 \ub2f9\uc5f0\ud788 \ub098\uc57c \ud560 \uc5d0\ub7ec\uc8e0. \ucef4\ud30c\uc77c\ub7ec\ub294 \uc774 \ubc30\uc5f4\uc774 \"array\" \ud0a4\uc6cc\ub4dc\uc758 \ud6a8\ub2a5\uc5d0 \uc758\ud574 \uad00\ub9ac \ub41c\ub2e4\ub294 \uac83\uc744 \uc544\ub294\ub370\ub3c4 \uc65c \ucd5c\uc0c1\uc704 hat\uc774 \ud544\uc694 \ud55c\uc9c0\ub294 \uc800\ub3c4 \ud655\uc2e4\ud788 \ub294 \uc798 \ubaa8\ub974\uaca0\uc2b5\ub2c8\ub2e4. \uadf8\ub7ec\ub098 \ud655\uc2e4\ud55c \uac83\uc740 \uc5b8\uc5b4\ub97c \ub9cc\ub4e4\uc5b4 \ub0b8 \ubd84\ub4e4\uc774 \uadf8\ub807\uac8c \ud560\ub9cc\ud55c \uc774\uc720\uac00 \uc788\uc5c8\uc744 \uac83\uc774\uace0 \uc774 \ub610 \ub9d0\uc774 \ub418\uae34 \ud55c\ub2e4\ub294 \uac83\uc774\uc8e0. \uad00\ub9ac\ub418\ub294 \uac83\ub4e4\uc740 hat\uc744 \uac16\uc2b5\ub2c8\ub2e4. \uae30\ubcf8 \ud615\uc758 \uad00\ub9ac \ubc30\uc5f4\uc5d0\uc11c\ub3c4 \ucd5c\uc0c1\uc704 hat \uc774 \ud544\uc694 \ud569\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4: \n<P>\/\/ int \ud615 \uad00\ub9ac \ubc30\uc5f4 \n<P>array&lt;int&gt;^ foo; \n<P>\u2022 Count \ub300\uc2e0 Length\ub97c \uc774\uc6a9\ud574 \ubc30\uc5f4\uc758 \uae38\uc774\ub97c \uc5bb\uc2b5\ub2c8\ub2e4. \n<P>\u2022 \uad00\ub9ac NULL \ud3ec\uc778\ud130\uc5d0 \ub300\ud55c \uac80\uc0ac\ub97c \ud574\uc57c \ud55c\ub2e4\uba74 NULL \ub300\uc2e0 nullptr\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4. \n<P>\u2022 \ud15c\ud50c\ub9bf\uc740 \uad00\ub9ac \ud074\ub798\uc2a4\uc640 \uc0ac\uc6a9\ub420 \ub54c \ub354 \uc798 \uc791\ub3d9 \ud569\ub2c8\ub2e4. \uc774 \uac83\uc774 C++\/CLI\ub97c \uc0ac\uc6a9\ud574\uc57c \ud558\ub294 \uac00\uc7a5 \uc911\uc694\ud55c \uc774\uc720 \uc911\uc5d0 \ud558\ub098 \uc785\ub2c8\ub2e4. \uad00\ub9ac \ud074\ub798\uc2a4\uc640 \ub124\uc774\ud2f0\ube0c \ud074\ub798\uc2a4\ub4e4\uc740 \uac01\uc790 \uc790\uc2e0\ub9cc\uc758 \uad6c\ubb38\uc744 \uac16\uac8c \ub418\uace0 (overload \ub41c *\ub97c \uacf5\uc720\ud558\ub294 \ub300\uc2e0) \ud15c\ud50c\ub9bf \uc0dd\uc131\uc790\ub294 \uc774\ub97c \uc27d\uac8c \uad6c\ubd84 \ud560 \uc218 \uc788\uae30 \ub54c\ubb38\uc785\ub2c8\ub2e4. \n<P>\uc5ec\uae30\uc11c \uc81c\uac00 \uc5b8\uae09 \ud558\uc9c0 \uc54a\uc740 \uad6c\ubb38 \ubcc0\ud654\ub4e4\uc774 \ub354 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ub4e4\uc5d0 \ub300\ud574\uc120 \uc5ec\ub7ec\ubd84\ub4e4\ub3c4 \uc790\uc5f0\ud788 \uc54c\uac8c \ub418\uaca0\uc8e0. \uc774\uc5d0 \ub300\ud55c \uac1c\uc694\ub85c Stan Lippman\uc774 \uc4f4 \"Hello C++\/CLI\"\ub97c \ubcf4\uc2dc\ub294 \uac83\uc744 \uad8c\ud574 \ub4dc\ub9bd\ub2c8\ub2e4. MSDN Magazine\uc758 \ud2b9\ubcc4 Visual Studio 2005 \ud310\uc5d0 \uc788\uc2b5\ub2c8\ub2e4(<a class=\"con_link\" href=\"http:\/\/msdn.microsoft.com\/msdnmag\/issues\/06\/00\/PureC\" target=\"_blank\" rel=\"noopener\"><FONT color=#0018a0>msdn.microsoft.com\/msdnmag\/issues\/06\/00\/PureC (\uc601\ubb38)<\/FONT><\/A>). \uc774 \uae00\uacfc Stan\uc758 \ub2e4\ub978 \uae30\uc0ac \"A Baker's Dozen: Thirteen Things You Should Know Before Porting Your Visual C++ .NET Programs to Visual Studio 2005\u2033 (<a class=\"con_link\" href=\"http:\/\/msdn.microsoft.com\/library\/en-us\/dnvs05\/html\/BakerDozen.asp\" target=\"_blank\" rel=\"noopener\"><FONT color=#0018a0>msdn.microsoft.com\/library\/en-us\/dnvs05\/html\/BakerDozen.asp (\uc601\ubb38)<\/FONT><\/A>)\ub3c4 \ucd94\ucc9c \ud574\ub4dc\ub9bd\ub2c8\ub2e4. \n<P>\uc0c8\ub85c\uc6b4 \uad6c\ubb38 \ub54c\ubb38\uc5d0 \ub108\ubb34 \uac81 \uba39\uc9c0\ub294 \ub9c8\uc2dc\uace0\uc694. * \ub97c ^ \ub85c \/clr:oldSyntac\ub97c \/clr\ub85c \ubc14\uafb8\uae30\ub9cc \ud558\ub2c8 \ub098\uba38\uc9c0\ub294 \ucef4\ud30c\uc77c\ub7ec \uc5d0\ub7ec \uace0\uce58\ub294 \uc218\uc900 \uc774\uc600\uc2b5\ub2c8\ub2e4. ManWrap\uc774 \ucef4\ud30c\uc77c\ub7ec\ub97c \ud1b5\uacfc \ud558\uace0 \ub098\ub2c8 \uc544\ubb34\ub7f0 \ubb38\uc81c \uc5c6\uc774 \uc791\ub3d9 \ud558\ub354\uad70\uc694. Redmond \uc0ac\ub78c\ub4e4\uc740 \uc774\uc5d0 \ub300\ud574 \uc790\ub791\uc2a4\ub7ec\uc6cc \ud560 \ub9cc \ud569\ub2c8\ub2e4. \ucef4\ud30c\uc77c\ub7ec\uac00 \ucf54\ub4dc\uc758 \uc815\ud655\ud568\uc744 \ubcf4\uc7a5 \ud560 \uc218 \uc788\ub2e4\uba74 \uadf8 \ubcf4\ub2e4 \uc88b\uc740 \uac83\uc774 \uc788\uaca0\uc2b5\ub2c8\uae4c? ^ \ub85c\uc758 \ubcc0\ud658\uc774 \ub108\ubb34 \uc27d\uac8c \ub05d\ub098 \ub108\ubb34 \uc2f1\uae00\ubc99\uae00 \ud55c \ub098\uba38\uc9c0 GCHANDLE\uc744 MANHANDLE\ub85c \ubc14\uafc0\uae4c \uae4c\uc9c0 \uc0dd\uac01 \ud588\uc9c0\ub9cc. \uc548 \ud558\uae30\ub85c \ud588\uc2b5\ub2c8\ub2e4. \n<P>\n<P>\ub450 \uac00\uc9c0 \uc791\uc740 \ubd88\ud3c9 \n<P>\uc804\uccb4\uc801\uc73c\ub85c Visual Studio .NET 2003\uc5d0\uc11c Visual Studio 2005\ub85c\uc758 \uc774\ub3d9\uc740 \ud070 \ubb38\uc81c \uc5c6\uc774 \uc9c4\ud589 \ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uc804 Emacs \uac19\uc740 \uc5d0\ub514\ud130 \uc774\uc678\uc5d0\ub294 \uac70\ub4e4\ub5a0 \ubcf4\uc9c0\ub3c4 \uc54a\ub294 \ud14d\uc2a4\ud2b8 \ud574\ucee4 \uc774\uae30 \ub54c\ubb38\uc5d0 IDE \uc5d0 \ub300\ud574\uc11c\ub294 \ud06c\uac8c \ub9d0\uc500 \ub4dc\ub9b4 \uac83\uc774 \uc5c6\uad70\uc694. \uadf8\ub7ec\ub098 Visual Studio 2005\uc5d0 \ub300\ud574 \ub450 \uac00\uc9c0 \ubd88\ud3c9\uc774 \uc788\uc2b5\ub2c8\ub2e4. \uc6b0\uc120 \uccab \ubc88\uc9f8\ub85c \"\ub0b4 \ubb38\uc11c\" \ud3f4\ub354\ub97c \uc81c\uac00 \ud544\uc694\ud558\uc9c0\ub3c4 \uc54a\uace0 \uc4f0\uc9c0\ub3c4 \uc54a\uc744 \ud3f4\ub354\ub85c \ub354\ub7fd\ud788\ub354\uad70\uc694. \uc774\uac83 \uc800\uac83 \ub4a4\uc9c0\ub2e4 \ubcf4\ub2c8 \uc774 \ud3f4\ub354\ub97c \ub2e4\ub978 \uacf3\uc73c\ub85c \uc62e\uae38 \uc218 \uc788\ub294 \ub808\uc9c0\ud2b8\uc2a4\ub9ac \ud0a4\ub97c \ucc3e\uc544 \ub300\ubd80\ubd84\uc758 \ud3f4\ub354\ub4e4\uc744 \uc81c \ub208\uc5d0 \uc548 \ub744\ub294 TEMP \ub514\ub809\ud130\ub9ac\ub85c \uc62e\uae38 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc804 \uc81c \ucef4\ud4e8\ud130\uc758 \ud3f4\ub354\ub97c \uc815\ub9ac \ud558\ub294\ub370 \uc0c1\ub2f9\ud55c \ub178\ub825\uc744 \ub4dc\ub9ac\ub294 \uc9c0\ub77c \uc5b4\ub5a4 \uad8c\uc704\uc801\uc778 \ud504\ub85c\uadf8\ub7a8\uc774 \uc81c \ud558\ub4dc\ub514\uc2a4\ud06c\ub97c \ub9d8\ub300\ub85c \uace0\uccd0 \ubc84\ub9ac\ub294 \uac83\uc774 \uc2eb\ub354\uad70\uc694. \uadf8\ub798\uc11c \uacbd\uace0\ud569\ub2c8\ub2e4: \ub9cc\uc57d \uc5ec\ub7ec\ubd84\uc758 \ud504\ub85c\uadf8\ub7a8\uc774 \ud3f4\ub354\ub97c \ud544\uc694\ub85c \ud55c\ub2e4\uba74 \uadf8 \ud3f4\ub354\ub4e4\uc744 \uc5b4\ub514\uc5d0 \ub9cc\ub4e4\uc9c0 \uc0ac\uc6a9\uc790\ub4e4\uc774 \uc9c1\uc811 \uc120\ud0dd \ud558\uac8c \ud558\uc2ed\uc2dc\uc624. \n<P>\uc81c \ub2e4\ub978 \ubd88\ub9cc\uc740 Visual Studio 2005\uac00 \ub354 \uc774\uc0c1 sound schemes \uc744 \uc9c0\uc6d0 \ud558\uc9c0 \uc54a\ub294 \ub2e4\ub294 \uac83\uc785\ub2c8\ub2e4. \uc800\ub3c4 \uc2dc\ub044\ub7ec\uc6b4 \ud504\ub85c\uadf8\ub7a8\uc744 \uc88b\uc544\ub77c \ud558\uc9c4 \uc54a\uc2b5\ub2c8\ub2e4\ub9cc \uc774\ub7f0 \uacbd\uc6b0\uc5d4 \uc720\uc6a9\ud558\ub354\uad70\uc694. Visual Studio 2003\uc5d0\uc11c\ub294 \ube4c\ub4dc\ub97c \uc2dc\uc791\uc2dc\ud0a8 \ud6c4 \ub2e4\ub978 \ucc3d\uc5d0\uc11c \uc791\uc5c5\uc744 \ud558\ub7ec \uac11\ub2c8\ub2e4. \ucef4\ud30c\uc77c\uc774 \ub05d\ub0ac\uc744 \ub54c \ub098\ub294 \uc18c\ub9ac\uc5d0 \ub530\ub77c \ucef4\ud30c\uc77c\uc774 \uc131\uacf5 \ud588\ub294\uc9c0 \uc2e4\ud328 \ud588\ub294\uc9c0 \ubc14\ub85c \uc54c \uc218 \uc788\uc5c8\uc73c\ub098 Visual Studio 2005 \uc5d0\uc11c\ub294 \uacb0\uacfc \ucc3d\uc744 \uc77d\uc5b4 \ubd10\uc57c \uc54c \uc218 \uc788\uc8e0. \ubcc4\ub85c \uc7ac\ubbf8 \uc5c6\ub294 \uc77c \uc911\uc5d0 \ud558\ub098\uac00 \uacb0\uacfc \ucc3d\uc744 \uc77d\uc5b4 \ubcf4\ub294 \uac83 \uc785\ub2c8\ub2e4. \uacbd\uace0 \ud558\ub098 \ub354 \uac11\ub2c8\ub2e4: \uc808\ub300 \uae30\uc874\uc758 \uae30\ub2a5\uc744 \uc81c\uac70 \ud558\uc9c0 \ub9c8\uc2ed\uc2dc\uc624. \n<P>\uc774 \ub450 \uac1c\uc758 \uc791\uc740 \ubd88\ub9cc\uacfc \/NOENTRY \uc5d0\ub7ec\ub97c \uc81c\uc678 \ud558\uace0\ub294 Visual Studio 2005\ub85c \uc5c5\uadf8\ub808\uc774\ub4dc \ud558\uae30\uac00 \uc0c1\ub2f9\ud788 \uc26c\uc6e0\uc2b5\ub2c8\ub2e4. \uc544\uc9c1 \uc5c5\uadf8\ub808\uc774\ub4dc \ud558\uc9c0 \uc54a\uc73c\uc168\ub2e4\uba74 \ubc14\ub85c \ud574\ubcf4\uc138\uc694. \ud63c\ud569\/\uad00\ub9ac assembly\ub97c \uc791\uc131 \ud558\uc2e0\ub2e4\uba74 \ub354\ub354\uc6b1 \ucd94\ucc9c \ud574\ub4dc\ub9bd\ub2c8\ub2e4. \uc0c8 \uad6c\ubb38\uc774 \ub354 \uc88b\uc2b5\ub2c8\ub2e4. \ubb3c\ub860 \uc5b4\ub5a4 \ubcc0\ud654\uc5d0\uc11c\ub4e0 \uc57d\uac04\uc758 \uc218\uc815\uc740 \ud544\uc694 \ud569\ub2c8\ub2e4. \uadf8\ub7ec\ub098 \ud55c\ubc88 \uc801\uc751 \ub418\uc2e0\ub2e4\uba74 \uc774\ubcf4\ub2e4 \uc88b\uc744 \uc218 \uc5c6\uc8e0. \n<P>ManWrap\uc740 MSDN Magazine \uc6f9\uc0ac\uc774\ud2b8\uc5d0\uc11c \ubc1b\uc73c\uc2e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud574\ub2f9 \ub2e4\uc6b4\ub85c\ub4dc\ub294 \uc138 \ubc84\uc804\uc73c\ub85c \uad6c\uc131 \ub418\uc5b4 \uc788\uc73c\uba70 Visual Studio .NET 2003 \ubc84\uc804, Visual Studio 2005 \ubc84\uc804 \uc6a9\uc758 \uc774\uc804 C++\/CLI \uad6c\ubb38\uc744 \uc0ac\uc6a9\ud55c \ubc84\uc804\uacfc \uc0c8 C++\/CLI \uad6c\ubb38\uc744 \uc0ac\uc6a9\ud55c \ubc84\uc804\uc744 \uc81c\uacf5 \ud569\ub2c8\ub2e4. \uc990\uac70\uc6b4 \ud504\ub85c\uadf8\ub798\ubc0d \ud558\uc138\uc694~!<\/P>\n","protected":false},"excerpt":{"rendered":"<p>\ub9ce\uc740 \ubd84\ub4e4\uc774 \ud604\uc7ac Visual Studio\u00ae 2005\ub85c \uc5c5\uadf8\ub808\uc774\ub4dc \uc911\uc77c \uac83\uc73c\ub85c \uc0dd\uac01 \ub429\ub2c8\ub2e4. \uadf8\ub798\uc11c \uc9c0\uae08 \uc774\uc57c \ub9d0\ub85c \uc0c8 \ucef4\ud30c\uc77c\ub7ec\uc640 \uc800\uc758 \uacbd\ud5d8\ub2f4\uc5d0 \ub300\ud55c \uae00\uc744 \uc4f0\uae30\uc5d0 \uc88b\uc740 \uc2dc\uae30\uc778 \uac83\uc73c\ub85c \uc0dd\uac01 \ub418\uc5b4 \uc774 \uae30\uc0ac\ub97c \uc4f0\uac8c \ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uc65c \uc774\uc81c\uc11c\uc57c \uc4f0\uac8c \ub418\uc5c8\ub0d0\uace0\uc694? \ub2a6\uc5c8\ub2e4\uace0 \uc0dd\uac01 \ub420 \ub54c\uac00 \uac00\uc7a5 \ube60\ub978 \uac83 \uc544\ub2c8\uaca0\uc2b5\ub2c8\uae4c? \uc5ec\ub7ec\ubd84\uc774 Visual Studio 2005\uc5d0\uc11c \uac00\uc7a5 \uba3c\uc800 \uc8fc\ubaa9\ud560 \uac83\uc774 \ubc14\ub85c \ubc84\uc804 \uad00\ub9ac\uc790 \uc785\ub2c8\ub2e4. [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[17],"tags":[],"class_list":["post-99","post","type-post","status-publish","format-standard","hentry","category-development_dev_tools"],"_links":{"self":[{"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/99","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=99"}],"version-history":[{"count":0,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/99\/revisions"}],"wp:attachment":[{"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=99"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=99"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=99"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}