锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 寰堝ソ鐢ㄥ摝 浠g爜 // The pointer to my combo box. // Set the height of every item so the item // Only want to set the item height if the current height // Only want to set the item width if the current width 鏁堟灉鍥撅細 2. 鎶婁綘铏氭嫙鏈轟腑鎿嶄綔緋葷粺鐨?font face="Times New Roman">Editing Auto Ethernet->IPV4 Setting 璁劇疆鎴愬涓婂浘鎵紺恒?/p>
鏈変簺Linux鍙互濡備笅璁劇疆錛?#8220;鏈湴榪炴帴”涔熻緗負鑷姩鑾峰緱IP銆佽嚜鍔ㄨ幏寰?font face="Times New Roman">DNS鏈嶅姟鍣紙鍦ㄨ櫄鎷熸満涓紝鍙抽敭“鏈湴榪炴帴”錛嶅弻鍑?#8220;Internet 鍗忚”,鐪嬬湅鏄笉鏄嚜鍔ㄧ殑鍚э紒鍥哄畾IP鐨勪篃鍦ㄨ繖閲屾敼錛侊級 3.褰撶劧鏄皢铏氭嫙鏈虹殑涓婄綉鏂瑰紡閫変負NAT鍜?/p>
鍙抽敭浣犺璁劇疆鐨勮櫄鎷熸満閫?#8220;璁劇疆”錛堝洜涓烘湁鐨勪笉姝㈣櫄鎷熶竴鍙幫級錛屽湪“紜歡”涓?#8220;浠ュお緗?#8221;錛?灝嗗彸杈圭殑緗戠粶榪炴帴鏀逛負NAT錛嶇‘瀹氥?/p>
4.鐐硅彍鍗曟爮閲岀殑“緙栬緫”錛嶉?#8220;铏氭嫙緗戠粶璁劇疆”錛屽厛灝?#8220;鑷姩妗ユ帴”緇欏幓鎺夛紙鍘繪帀閽╅挬錛夛紝鍐嶉?#8220;DHCP”寮鍚?font face="Times New Roman">DHCP鏈嶅姟錛岀偣“寮濮?#8221;錛嶅簲鐢紝鍐嶆寜鍚屾牱鐨勬柟娉曞紑鍚?#8220;NAT”鐨勫姛鑳姐?/p>
5.鏈閲嶈鐨勬槸浣犵殑涓や釜鏈嶅姟蹇呴』寮鍚細VMware DHCP Service 鍜?font face="Times New Roman">VMware NAT Service銆?/p>
鍏蜂綋鎿嶄綔濡備笅: 寮濮?font face="Times New Roman">---璁劇疆--鎺у埗闈㈡澘---綆$悊宸ュ叿---鏈嶅姟錛岀‘淇?VMware DHCP Service 鍜?font face="Times New Roman">VMware NAT Service 鏈嶅姟宸茬粡鍚姩 //====================================鍙﹀鐨勬柟娉?/p>
Ubuntu铏氭嫙鏈哄叡浜富鏈轟笂緗?br />WinXP+VMware WorkStation+Ubuntu7.10
]]>
ShowDropDown();涔嬪悗SetCursor(LoadCursor(NULL, IDC_ARROW));鍗沖彲
]]>
http://www.tuicool.com/topics/11020052?st=0&lang=1&pn=1
OpenCV_鍩轟簬灞閮ㄨ嚜閫傚簲闃堝肩殑鍥懼儚浜屽煎寲
http://www.tuicool.com/articles/Mvqeui
涓涓緢濂界殑蹇熷皬娉㈠彉鎹紙FWT錛夋簮鐮?C++鐨?http://www.codeproject.com/KB/graphics/2D_FWT_lib.aspx
]]>
extern CComboBox* pmyComboBox;
// is completely visible.
CString str;
CSize sz;
int dx=0;
CDC* pDC = pmyComboBox->GetDC();
for (int i=0;i < pmyComboBox->GetCount();i++)
{
pmyComboBox->GetLBText( i, str );
sz = pDC->GetTextExtent(str);
// is not big enough.
if (pmyComboBox->GetItemHeight(i) < sz.cy)
pmyComboBox->SetItemHeight( i, sz.cy );
// is not big enough.
if (pmyComboBox->GetDroppedWidth() < sz.cx)
{
pmyComboBox->SetDroppedWidth(sz.cx + 20);
}
}
pmyComboBox->ReleaseDC(pDC);
]]>
榪欓噷鎴戠敤鍒扮殑騫沖彴鏄?Microsoft Visual Studio 2008 鍜孫penCV2.0
OpenCV2.0涓嬭澆鍦板潃 http://www.opencv.org.cn/index.php/Download銆傚畨瑁匫penCV2.0錛屽亣瀹氬畨瑁呯洰褰曚負錛欴:Program FilesOpenCV2.0
CMake涓嬭澆鍦板潃 http://www.cmake.org/cmake/resources/software.html (閫夋嫨 Win32 Installer 瀹夎鐗堟湰錛夈?br />
浜屻佺紪璇慜penCV
1. 鐢–Make瀵煎嚭VC++ 欏圭洰鏂囦歡
■ 榪愯cmake-gui錛岃緗礬寰勪負OpenCV瀹夎璺緞錛堜緥濡傦細D:\Program Files\OpenCV2.0錛夛紝騫跺垱寤哄瓙鐩綍 D:\Program Files\OpenCV2.0\vc2008錛岀敤浜庡瓨鏀劇紪璇戠粨鏋溿?br />■ 鐒跺悗鐐?configure錛屽湪寮瑰嚭鐨勫璇濇鍐呴夋嫨 Visual Studio 9 2008銆?br />■ Microsoft Visual Studio 2008 姝e紡鐗堟敮鎸丱penMP錛屾墍浠NABLE_OPENMP榪欎釜閫夐」瑕佸嬀涓婏紱濡傛灉鏄疎xpress鐗堟湰錛屽垯涓嶆敮鎸丱penMP錛屾墍浠ラ渶瑕佸彇娑圗NABLE_OPENMP閫夐」銆?br />■ 鏈鍚庡啀鐐瑰嚮Generate銆?br />


2. 緙栬瘧 OpenCV Debug 鍜?Release鐗堟湰搴?/span>
瀹屾垚涓婁竴姝ラ鍚庯紝灝嗗湪D:\Program Files\OpenCV2.0\vc2008鐩綍涓嬬敓鎴怬penCV.sln鐨刅C Solution File錛岃鐢╒C++ 2008 Express鎵撳紑OpenCV.sln錛岀劧鍚庢墽琛屽涓嬫搷浣滐細
■ 鍦―ebug涓嬶紝閫夋嫨Solution Explorer閲岀殑 Solution OpenCV錛岀偣鍙抽敭錛岃繍琛?Rebuild Solution"錛涘緙栬瘧鏃犻敊璇紝鍐嶉夋嫨INSTALL欏圭洰錛岃繍琛?Build"銆?br />■ 鍦≧elease涓嬶紝閫夋嫨Solution Explorer閲岀殑 Solution OpenCV錛岀偣鍙抽敭錛岃繍琛?Rebuild Solution"錛涘緙栬瘧鏃犻敊璇紝鍐嶉夋嫨INSTALL欏圭洰錛岃繍琛?Build"銆?
姝ゆ椂錛孫penCV鐨?d.dll鏂囦歡錛坒or debug錛夊拰*.dll鏂囦歡錛坒or release錛夊皢鍑虹幇鍦―:\Program Files\OpenCV2.0\vc2008\bin鐩綍涓紱OpenCV鐨?d.lib鏂囦歡錛坒or debug錛?鍜?.lib鏂囦歡錛坒or release錛夊皢鍑虹幇鍦―:\Program Files\OpenCV2.0\vc2008\lib鐩綍錛涘ご鏂囦歡*.h鍑虹幇鍦―:\Program Files\OpenCV2.0\vc2008\include\opencv涓?br />鑷蟲Microsoft Visual Studio 2008 璋冪敤鐨凮penCV鍔ㄦ佸簱鐢熸垚瀹屾瘯銆?/p>





涓夈侀厤緗甒indows鐜鍙橀噺Path
灝咲:\Program Files\OpenCV2.0\vc2008\bin鍔犲叆Windows緋葷粺鐜鍙橀噺Path涓?br />鍔犲叆鍚庯紝蹇呴』娉ㄩ攢褰撳墠鐢ㄦ埛鎴栬呴噸鏂板惎鍔ㄦ墠鑳界敓鏁堛?br />

鍥涖佷負Microsoft Visual Studio 2008 閰嶇疆OpenCV鐜
鎵撳紑Microsoft Visual Studio 2008錛岃彍鍗?Tools -> Options -> Projects and Solutions -> VC++ Directories銆?br />■ Show directories for閫夋嫨include files錛屽姞鍏ョ洰褰?D:\Program Files\OpenCV2.0\vc2008\include\opencv
■ Show directories for閫夋嫨library files錛屽姞鍏ョ洰褰?D:\Program Files\OpenCV2.0\vc2008\lib 
浜斻佷嬌鐢∣penCV 2.0 緙栫▼
浠ュ悗姣忓垱寤轟竴涓狾penCV 鐨刉in32 鎺у埗鍙扮▼搴忥紝閮介渶瑕佹坊鍔犱緷璧栫殑搴?br />■ 閫夋嫨Solution Explorer閲岀殑 “欏圭洰鍚嶇О”錛岀偣鍑婚紶鏍囧彸閿紝閫夋嫨Properties錛?br />■ 涓洪」鐩殑Debug閰嶇疆澧炲姞渚濊禆鐨勫簱錛歝xcore200d.lib cv200d.lib highgui200d.lib錛?br />■ 涓洪」鐩殑Release閰嶇疆澧炲姞渚濊禆鐨勫簱錛歝xcore200.lib cv200.lib highgui200.lib
]]>
涓.Bridged鏂瑰紡鍏變韓涓婄綉
1.璁劇疆Ubuntu鐨勭綉緇滆繛鎺ユ柟寮忎負Bridged
2.鍏變韓ADSL榪炴帴
ADSL榪炴帴灞炴т腑閫変腑“Internet榪炴帴鍏變韓”錛屼笅鎷夊垪琛ㄤ腑鐒跺悗閫夋嫨“鏈湴榪炴帴”錛岀郴緇熶細鑷姩鎶?#8220;鏈湴榪炴帴”璁劇疆涓?92.168.0.1銆傛敞鎰忔璁劇疆浼氬湪鏂紑榪炴帴騫墮噸鍚悗鎵嶇敓鏁?br />
3.Ubuntu緗戠粶璁劇疆
IP:192.168.0.X
緗戝叧:192.268.0.1
DNS:192.168.0.1(緋葷粺->緋葷粺綆$悊->緗戠粶->DNS)
浜?NAT鏂瑰紡鍏變韓涓婄綉
1.璁劇疆Ubuntu鐨勭綉緇滆繛鎺ユ柟寮忎負NAT
2.寮鍚疺Mware DHCP Service鍜孷Mware NAT Service涓や釜鏈嶅姟
3.Ubuntu涓綉緇滆緗負鑷姩閰嶇疆(DHCP)鎴栬呮墜鍔ㄨ緗甀P鍙奃NS
鎵嬪姩璁劇疆鏂規硶錛?br />
1.XP涓璱pconfig錛屽緱鍒癡Mnet8鐨処P涓?92.168.93.1
2.Ubuntu涓緗綉緇淚P涓?92.168.93.X(X涓?-254錛岀綉涓婂緢澶氫漢璇村彧鑳芥槸128-254錛岃嚜鍔ㄥ垎閰嶆椂涓鑸篃鏄?28錛屼絾緇忛獙璇?-254閮借錛孌NS璁劇疆涓?92.168.93.2
浠ヤ笂鏂規硶鍧囩粡楠岃瘉錛岀粷鏃犲浣欐楠ゃ?/p>
Dump鏂囦歡涓嶇敤闈炶鏀懼湪浣犵紪璇戝嚭鏉ョ殑浣嶇疆錛屼綘瀹屽叏鍙互寤虹珛涓涓柊鐨勬枃浠跺す鏉ユ斁瀹冦備絾鑻ヤ笉鏄瓨鏀懼湪緙栬瘧鍑烘潵鐨勪綅緗紝闇瑕佸皢緙栬瘧鐢熸垚鐨凱DB鏂囦歡鎷瘋礉鍒癉ump鏂囦歡鐩綍錛屾垨鏄埄鐢╒S2005鎵撳紑Dump鏂囦歡鍚庯紝璁劇疆PDB鏂囦歡璺緞銆?br />
2銆?濡備綍鎭㈠褰撴椂鐨勭幇鍦猴紵
鍙兘浣犺闂紝鎬庝箞鍙兘錛岃繖涓猟ump鏂囦歡鍙槸鐢ㄦ埛鍙戠粰鎴戠殑錛屾垜涓嶅彲鑳藉幓鐢ㄦ埛瀹墮噷璋冭瘯鍚э紵榪欎釜鎭㈠鐜板満鍙笉鏄寚鐨勯潪瑕佸埌閭e彴鏈哄櫒涓婂幓錛岃屾槸瑕佹妸浜х敓dump鏂囦歡瀵瑰簲鐨勪簩榪涘埗鏂囦歡鎷垮埌銆?br />
浣嗘槸鎭㈠鐜板満闇瑕佹墍鏈夌殑浜岃繘鍒舵枃浠墮兘瑕佸搴旓紝浣犱竴瀹氳鏈夊鑷寸敤鎴峰穿婧冪殑閭d簺Exe鍜孌LL銆傛棦鐒舵槸浣犲彂甯冪殑紼嬪簭錛孍xe鏂囦歡褰撶劧浣犱細鏈夈傛墍浠ヨ繖閲屽彧鑰冭檻DLL灝辮浜嗐?br />
Dump鏂囦歡涓褰曚簡鎵鏈塂LL鏂囦歡鐨勭増鏈彿鍜屾椂闂存埑錛屾墍浠ヤ綘涓瀹氬彲浠ュ悓榪囨煇縐嶉斿緞鎷垮埌瀹冦傚鏋滀綘鑳戒粠鐢ㄦ埛閭i噷鎷垮埌鏈濂斤紝濡傛灉涓嶆柟渚匡紝鐢ㄦ埛涓嶅彲鑳界敤鐨勬槸鎴戜滑騫沖父涓嶅父鐢ㄧ殑鎿嶄綔緋葷粺錛屾墍浠ユ壘涓湁瀵瑰簲緋葷粺鐨勬満鍣ㄤ竴鑸兘浼氭湁銆備絾鏄浣忎笉浠呮槸鏂囦歡鍚嶇О瑕佷竴鑷達紝榪樿鏍稿鐗堟湰鍜屾椂闂存埑錛屽鏋滀笉鍚屼竴鏍鋒病鏈夊姙娉曠敤銆?br />
濡傛灉瀹㈡埛鐢ㄤ簡鏌愪釜鐗規畩鐨勮ˉ涓佹庝箞鍔烇紵
鍏跺疄榪欎釜闂涔熷緢濂借В鍐籌紝鍙瀹冧笉闃葷闃呰鍫嗘爤錛屽氨涓嶇敤綆″畠錛岃皟璇旸ump鍜岃繍琛岀▼搴忎笉涓鏍鳳紝緙哄皯涓涓や釜DLL娌℃湁浠諱綍闂銆?br />
3銆?濡傛灉鐪熺殑闇瑕佹庝箞鍔烇紵
絎﹀彿鏂囦歡鐜板湪涓昏鏄寚PDB鏂囦歡銆?br />
濡傛灉娌℃湁絎﹀彿鏂囦歡錛岄偅涔堣皟璇曠殑鏃跺欏彲鑳藉鑷村爢鏍堥敊璇?br />
濡傛灉浣犱涪澶變簡榪欎釜鍙戝竷鐗堟湰涓綘緙栬瘧鍑烘潵鐨勯偅浜沞xe鍜孌LL鐨凱DB錛岄偅涔堣繖涓崯澶辨槸涓ラ噸鐨勶紝閲嶆柊緙栬瘧鍑烘潵鐨勭増鏈槸涓嶈兘浣跨敤鐨勩?br />
鎴戣嚜宸辯殑DLL閮芥湁浜嗭紝鍙槸緙虹殑鏄郴緇熺殑DLL鐨勫搴擯DB鏂囦歡鎬庝箞鍔烇紵鍥?.4涓凡緇忎粙緇嶄簡鏂規硶銆傚井杞湪瀹冪殑絎﹀彿鏁版嵁搴撲笂涓烘垜浠彁渚涗簡鎵鏈夌殑PDB鏂囦歡錛岃繕鏈夐儴鍒嗛潪鍏抽敭DLL銆傝緗ソ鍚庣▼搴忓皢鑷姩涓嬭澆闇瑕佺殑PDB鍙奃LL鏂囦歡銆?br />
4銆?鎷垮埌闇瑕佺殑鏂囦歡浜嗭紝榪欎簺鏂囦歡搴旇鏀懼湪鍝噷錛?/strong>
絎﹀彿鏁版嵁搴撲腑鐨勬枃浠朵笉鐢ㄥ姩錛屾妸鍏跺畠鐨別xe鍜孌LL銆丳DB鏂囦歡鏀懼湪dump鏂囦歡鐩綍閲屽氨琛屼簡銆?br />
5銆?鎴戠敤鐨勬槸VS2005錛屾槑鏄庢湁婧愪唬鐮侊紝涓轟粈涔堟樉紺轟笉浜嗭紵
榪欎釜鏄痙ump璋冭瘯鐨勬渶澶寸棝闂錛屼唬鐮佸彲鑳藉凡緇忔敼榪囦簡錛屽嵆浣夸綘浠嶴VN鎷垮埌褰撴椂鐨勭増鏈紝鏃墮棿鎴充篃鏄敊鐨勶紝VS2005灝辨槸涓嶈浣犳樉紺轟唬鐮併傚叾瀹炲彧瑕佸湪
Tools/Options錛孌ebugging/General涓幓鎺?br />
Require source files to exactly match the original version鐨勫閫夊氨琛屼簡銆?
]]>
1銆?/span> 紼嬪簭緙栬瘧閫夐」
2銆?/span> 鍒╃敤VS2005 鍒嗘瀽dump鏂囦歡
3銆?/span> 甯歌闂璁ㄨ
涓銆?/span> 紼嬪簭緙栬瘧閫夐」
PDB files contains all debug information like type definition and function prototype. When application crashes, we need the PDB files to analyze the root cause, so make sure these PDB files will be created when building it. You must do the following setting:
C/C++/General/Debug Information Format=Program Database (/Zi).
鍥?/span>1.1 璋冭瘯淇℃伅鏍煎紡
Linker/Debugging/Generate Program Database File=”Name and location of your PDB files”
鍥?/span>1.2 PDB鏂囦歡杈撳嚭璺緞
PDB鏂囦歡璺緞鏈濂借緗湪鍚屼竴涓枃浠跺す涓紝榪欐牱鏂逛究dmp鏂囦歡璋冭瘯鏃惰皟鐢ㄣ?/span>
璋冭瘯鏃訛紝鎵鏈夌殑PDB鏂囦歡鍜屾簮鏂囦歡蹇呴』涓ユ牸鍖歸厤錛?/span>the PDB files should be the one generated by build the source code錛夛紝騫跺瓨鍌ㄥ湪涓涓畨鍏ㄧ殑浣嶇疆銆傚綋瀹㈡埛鎶ュ憡浜嗕竴涓敊璇椂錛屼綘闇瑕佽繖浜涙枃浠舵潵甯繖浠ヤ究瀹氫綅閿欒浜庢簮浠g爜涓茍瑙e喅闂銆?/span>
浜屻?/span> VS2005 鍒嗘瀽dump鏂囦歡
In this simple application, there is an unhandled Access Violation Reading exception, because GetNameFromDatabase returns a NULL pointer, and this pointer is passed into IsPrefix and then it’s used directly without NULL pointer checking.
鍥?/span>1.3 婕旂ず浠g爜
鍒╃敤Release妯″紡緙栬瘧璇ユ祴璇曠▼搴忥紝鍦ㄥ鎴鋒満涓婅繍琛岃紼嬪簭錛屽皢鏍規嵁NTSD璁劇疆鐢熸垚鐩稿搴旂殑DMP鏍煎紡鏂囦歡銆?/span>
鍙互浣跨敤Visual Studio.Net銆?/span>NTSD鎴栨槸鍏朵粬鐨勮皟璇曞伐鍏峰DMP鏍煎紡鏂囦歡榪涜鍒嗘瀽銆?/span>
l Start Visual Studio.Net
Click File/Open Solution and make sure the files of type is *.dmp then click Open.
鍥?/span>1.3 Open Dump File (GUI)
l Set Symbol Path
Click Tools/Options, Debugging/Symbols錛屽鍔?/span>PDB鏂囦歡璺緞銆傝嫢璋冭瘯鐨勭▼搴忛渶瑕佸井杞熀紜搴撶殑PDB淇℃伅錛屽彲浠ュ鍔犱竴涓礬寰勪負錛?/span>
http://msdl.microsoft.com/download/symbols
鍦ㄧ晫闈笅鏂?/span>Cache Symbol From symbol…閫夋嫨鏈湴瀛樺偍榪欎簺Symbols鐨勮礬寰勩?/span>
鍥?/span>1.4 Symbol Path
濡傛灉DMP鏂囦歡娌℃湁鏀懼叆鏈韓PDB鏂囦歡鎵鍦ㄧ洰褰曪紝涔熷彲浠ュ湪姝ゅ澧炲姞涓涓湰鍦扮洰褰曘傜偣OK鍚庯紝VS2005灝嗕粠緗戠粶涓笅杞芥墍闇瑕佺殑Symbols錛岄渶瑕佺瓑寰呬竴孌墊椂闂淬傚鏋滄槸澶氭璋冭瘯鍚屼竴涓▼搴忛敊璇墍鐢熸垚鐨?/span>DMP鏂囦歡錛屽彲浠ュ湪瀵硅瘽妗嗕腑閫夋嫨“Search the above locations only when symbols are loaded manually”銆備粠鑰屽彲浠ヨ妭鐪佺綉緇滃甫瀹姐?/span>
l Set Source code path
Open Solution Property Pages and set the source code path.
鍥?/span>1.5 灞炴ц彍鍗?/span>
鍥?/span>1.6 Debug Source Files
l Start to Debug the Dump File
Click the Debug menu, it will ask you to save as a solution, save it. Then it will go to the line which caused the crash of your application.
鍥?/span>1.7 璋冭瘯紿楀彛錛屽畾浣嶅埌婧愪唬鐮?/span>
涓夈?/span> 甯歌闂璁ㄨ
1銆?/span> Dump鏂囦歡鏀懼湪鍝噷錛?/span>
Dump鏂囦歡涓嶇敤闈炶鏀懼湪浣犵紪璇戝嚭鏉ョ殑浣嶇疆錛屼綘瀹屽叏鍙互寤虹珛涓涓柊鐨勬枃浠跺す鏉ユ斁瀹冦備絾鑻ヤ笉鏄瓨鏀懼湪緙栬瘧鍑烘潵鐨勪綅緗紝闇瑕佸皢緙栬瘧鐢熸垚鐨?/span>PDB鏂囦歡鎷瘋礉鍒?/span>Dump鏂囦歡鐩綍錛屾垨鏄埄鐢?/span>VS2005鎵撳紑Dump鏂囦歡鍚庯紝璁劇疆PDB鏂囦歡璺緞銆傚弬鐓у浘1.4銆?/span>
2銆?/span> 濡備綍鎭㈠褰撴椂鐨勭幇鍦猴紵
鍙兘浣犺闂紝鎬庝箞鍙兘錛岃繖涓?span lang="EN-US">dump鏂囦歡鍙槸鐢ㄦ埛鍙戠粰鎴戠殑錛屾垜涓嶅彲鑳藉幓鐢ㄦ埛瀹墮噷璋冭瘯鍚э紵榪欎釜鎭㈠鐜板満鍙笉鏄寚鐨勯潪瑕佸埌閭e彴鏈哄櫒涓婂幓錛岃屾槸瑕佹妸浜х敓dump鏂囦歡瀵瑰簲鐨勪簩榪涘埗鏂囦歡鎷垮埌銆?span lang="EN-US">
浣嗘槸鎭㈠鐜板満闇瑕佹墍鏈夌殑浜岃繘鍒舵枃浠墮兘瑕佸搴旓紝浣犱竴瀹氳鏈夊鑷寸敤鎴峰穿婧冪殑閭d簺Exe鍜?span lang="EN-US">DLL銆傛棦鐒舵槸浣犲彂甯冪殑紼嬪簭錛?span lang="EN-US">Exe鏂囦歡褰撶劧浣犱細鏈夈傛墍浠ヨ繖閲屽彧鑰冭檻DLL灝辮浜嗐?span lang="EN-US">
Dump鏂囦歡涓褰曚簡鎵鏈?span lang="EN-US">DLL鏂囦歡鐨勭増鏈彿鍜屾椂闂存埑錛屾墍浠ヤ綘涓瀹氬彲浠ュ悓榪囨煇縐嶉斿緞鎷垮埌瀹冦傚鏋滀綘鑳戒粠鐢ㄦ埛閭i噷鎷垮埌鏈濂斤紝濡傛灉涓嶆柟渚匡紝鐢ㄦ埛涓嶅彲鑳界敤鐨勬槸鎴戜滑騫沖父涓嶅父鐢ㄧ殑鎿嶄綔緋葷粺錛屾墍浠ユ壘涓湁瀵瑰簲緋葷粺鐨勬満鍣ㄤ竴鑸兘浼氭湁銆備絾鏄浣忎笉浠呮槸鏂囦歡鍚嶇О瑕佷竴鑷達紝榪樿鏍稿鐗堟湰鍜屾椂闂存埑錛屽鏋滀笉鍚屼竴鏍鋒病鏈夊姙娉曠敤銆?span lang="EN-US">
濡傛灉瀹㈡埛鐢ㄤ簡鏌愪釜鐗規畩鐨勮ˉ涓佹庝箞鍔烇紵
鍏跺疄榪欎釜闂涔熷緢濂借В鍐籌紝鍙瀹冧笉闃葷闃呰鍫嗘爤錛屽氨涓嶇敤綆″畠錛岃皟璇?span lang="EN-US">Dump鍜岃繍琛岀▼搴忎笉涓鏍鳳紝緙哄皯涓涓や釜DLL娌℃湁浠諱綍闂銆?span lang="EN-US">
3銆?/span> 濡傛灉鐪熺殑闇瑕佹庝箞鍔烇紵
絎﹀彿鏂囦歡鐜板湪涓昏鏄寚PDB鏂囦歡銆?span lang="EN-US">
濡傛灉娌℃湁絎﹀彿鏂囦歡錛岄偅涔堣皟璇曠殑鏃跺欏彲鑳藉鑷村爢鏍堥敊璇?span lang="EN-US">
濡傛灉浣犱涪澶變簡榪欎釜鍙戝竷鐗堟湰涓綘緙栬瘧鍑烘潵鐨勯偅浜?/span>exe鍜?/span>DLL鐨?/span>PDB錛岄偅涔堣繖涓崯澶辨槸涓ラ噸鐨勶紝閲嶆柊緙栬瘧鍑烘潵鐨勭増鏈槸涓嶈兘浣跨敤鐨勩?/span>
鎴戣嚜宸辯殑DLL閮芥湁浜嗭紝鍙槸緙虹殑鏄郴緇熺殑DLL鐨勫搴?/span>PDB鏂囦歡鎬庝箞鍔烇紵鍥?/span>1.4涓凡緇忎粙緇嶄簡鏂規硶銆傚井杞湪瀹冪殑絎﹀彿鏁版嵁搴撲笂涓烘垜浠彁渚涗簡鎵鏈夌殑PDB鏂囦歡錛岃繕鏈夐儴鍒嗛潪鍏抽敭DLL銆傝緗ソ鍚庣▼搴忓皢鑷姩涓嬭澆闇瑕佺殑PDB鍙?/span>DLL鏂囦歡銆?/span>
4銆?/span> 鎷垮埌闇瑕佺殑鏂囦歡浜嗭紝榪欎簺鏂囦歡搴旇鏀懼湪鍝噷錛?/span>
絎﹀彿鏁版嵁搴撲腑鐨勬枃浠朵笉鐢ㄥ姩錛屾妸鍏跺畠鐨?/span>exe鍜?/span>DLL銆?/span>PDB鏂囦歡鏀懼湪dump鏂囦歡鐩綍閲屽氨琛屼簡銆?/span>
5銆?/span> 鎴戠敤鐨勬槸VS2005錛屾槑鏄庢湁婧愪唬鐮侊紝涓轟粈涔堟樉紺轟笉浜嗭紵
榪欎釜鏄?/span>dump璋冭瘯鐨勬渶澶寸棝闂錛屼唬鐮佸彲鑳藉凡緇忔敼榪囦簡錛屽嵆浣夸綘浠?/span>SVN鎷垮埌褰撴椂鐨勭増鏈紝鏃墮棿鎴充篃鏄敊鐨勶紝VS2005灝辨槸涓嶈浣犳樉紺轟唬鐮併傚叾瀹炲彧瑕佸湪
Tools/Options錛?/span>Debugging/General涓幓鎺?/span>
Require source files to exactly match the original version鐨勫閫夊氨琛屼簡銆?/span>
鍏跺疄錛屾垜涓鐩磋涓篊Map鏄渶綆鍗曠殑涓涓暟鎹被鍨嬶紝濡傛灉璇達紝澶у瀵硅繖涓暟鎹被鍨嬩駭鐢熶笉鑹劅瑙夌殑璇濓紝澶у鏄洜涓哄Hash琛ㄧ殑闄岀敓銆?/span>
鏄劇劧錛孋Map灝辨槸瀵笻ash琛ㄧ殑涓縐嶅疄鐜般傚浜嶩ash琛ㄦ潵璇達紝鎴戜滑闇瑕佹彁渚涙垚瀵圭殑Key涓嶸alue榪涜鎿嶄綔錛屽叾瀹烇紝涔熷氨鏄皢鎴戜滑鏃ュ父浣跨敤鐨勬暟緇勪笅鏍囨浛鎹㈡垚鐜板湪Key錛岃嚦浜嶮FC鏄噰鐢ㄤ簡浠涔堟牱鐨勬暎鍒楀嚱鏁幫紝鎴戜滑涓嶅繀鐭ラ亾銆?/span>
Hash琛ㄥ彲浠ヨ涓烘槸鏁扮粍鐨勪竴縐嶄紭鍖栵紝鎴栬呰鏄鏁扮粍緙洪櫡鐨勪竴縐嶅譏琛ワ紝鍥犱負鎴戜滑鐭ラ亾錛屾暟緇勫湪鍏峰浜嗛珮鏁堝瓨鍙栨ц兘鐨勫悓鏃訛紝鏃犳硶鍔ㄦ佺殑璋冩暣鑷韓鐨勫ぇ灝忥紝鍙堜弗閲嶇殑褰卞搷浜嗗畠鐨勪嬌鐢ㄦ晥鏋溿傝繖緇欎簡Hash琛ㄥ彲涔樹箣鏈猴紝Hash琛ㄦ繪槸浣跨敤浜嗘煇縐嶇畻娉曞敖鍙兘鐨勬潵杈懼埌灝嗘垚瀵圭殑鍏冪礌瀛樺偍鍒頒竴涓瀹氱殑紱繪暎鐨勫唴瀛樼┖闂達紝瀹冩棦緇ф壙浜嗛摼琛ㄥ鑷韓鐨勫姩鎬佽皟鏁達紝鍙堝敖鍙兘鐨勪嬌璇誨啓緇存寔鍦ㄩ珮閫熺殑姘村鉤錛屽綋鐒舵棤璁哄浣曡繕鏄姣旀暟緇勬參鐨勫銆?/span>
濡傛灉浣犻潪瑕佽鎴戝憡璇変綘錛孒ash琛ㄦ槸浠涔堟牱鐨勪竴涓暟鎹粨鏋勭殑璇濓紝寰堥仐鎲撅紝鎴戞棤娉曞噯紜殑鎻忚堪錛岃繖灝辯浉褰撲簬浣犻棶鎴?#8220;鍑ゅ嚢鏄粈涔堟牱瀛?#8221;錛屼笉榪囨垜鍙互鍛婅瘔浣犲瓟闆鐨勬牱瀛愩傚父鐢ㄧ殑Hash琛ㄩ潪甯稿儚涓涓崄瀛楁暟緇勶紝浼間箮鍗佸瓧鏁扮粍鍙堟垚涓轟簡浼楀璇昏呯殑闅滅錛屽鏋滀綘鏆傛椂榪樹笉鑳界悊瑙g殑璇濓紝璇蜂綘鍘葷炕闃匟ash琛ㄧ殑璇︾粏璁鴻堪錛屽綋鐒朵綘涔熷彲浠ュ湪涓嶄箙涔嬪悗錛屽湪鏈鐪嬪埌榪欎簺緇忓吀鏁版嵁緇撴瀯鐨勭簿璁層?/span>
鐜板湪錛屾垜浠潵鐪嬩竴涓狢Map鐨勭敤娉曪紝鑷充簬瀹冪殑鍙傛暟錛屼綘鍙互鐪嬫湰絀洪棿涓綃囦笓闂ㄦ弿榪癈Array錛孋List浠ュ強CMap鍙傛暟鐢ㄦ硶鐨勬枃绔犮奀Array錛孋List錛孋Map濡備綍瀹炲寲錛堝疄渚嬪寲錛夈嬨備笅闈㈡槸鎴戣嚜宸辯紪鍐欑殑渚嬪瓙錛?/span>
class Point
{
public:
Point()
{
m_x = 0;
m_y = 0;
}
Point(int x, int y)
{
m_x = x;
m_y = y;
}
public:
int m_x;
int m_y;
};
typedef CMap<const char*, const char*, Point, Point&> CMapPnt; //璇峰湪浣跨敤涔嬪墠瀹氫箟
int main()
{
Point elem1(1, 100), elem2(2, 200), elem3(3, 300), point;
CMapPnt mp;
// insert 3 elements into map錛?span> #1
mp.SetAt("1st", elem1);
mp.SetAt("2nd", elem2);
mp.SetAt("3th", elem3);
// search a point named "2nd" from map #2
mp.Lookup("2nd", point);
printf("2nd: m_x: %d, m_y: %d\n", point.m_x, point.m_y);
// insert a new pair into map #3
Point elem4(4, 400);
mp["4th"] = elem4;
cout<<"count: "<<mp.GetCount()<<endl;
// traverse the entire map #4
size_t index = 0;
const char* pszKey;
POSITION ps = mp.GetStartPosition();
while( ps )
{
mp.GetNextAssoc(ps, pszKey, point);
printf("index: %d, m_x: %d, m_y: %d\n", ++index, point.m_x, point.m_y);
}
return 0;
}
浠g爜涓紝鎴戝凡緇忕粰鍑轟簡涓浜涙敞閲婏紝鎴戝悓鏍峰緩璁鑰呬滑錛岀敤鑻辨枃鍦ㄤ唬鐮佷腑娉ㄩ噴錛岃繖鏍風殑濂藉瀹炲湪鏄お澶氫簡銆傚挨鍏跺湪浠g爜闇瑕佸湪涓嶅悓緙栫爜鐨勬搷浣滅郴緇熶笂璋冭瘯鐨勬椂鍊欍?/span>
瀵逛簬CMap榪欎釜綾伙紝鎴戜笉寰椾笉鐫閲嶅暟鍡︿竴涓嬬殑鏄細閬嶅巻鎿嶄綔浠ュ強鍙栦笅鏍囥愩戞搷浣滐紝褰撶劧榪樻湁閭d釜浠ゅ緢澶氫漢鍥版儜涓嶅凡鐨凙RG_KEY鍒板簳搴旇濡備綍閫夋嫨鐨勯棶棰樸?/span>
閬嶅巻錛岀湅娉ㄩ噴#4錛岃嚦浜嶱OSITION鐨勫惈涔夛紝璇峰湪鏈┖闂達紝鏌ョ湅鍏跺畠鏂囩珷銆傚厛浣跨敤GetStartPosition()鍑芥暟鑾峰緱琛ㄥご鐨勪綅緗紝鐒跺悗錛屾垜浠彲浠ヤ嬌鐢℅etNextAssoc鍑芥暟鏉ラ亶鍘嗐侴etNextAssoc(POSITION& rNextPosition, KEY& rKey, VALUE& rValue)鍑芥暟鐨勫弬鏁板煎緱璇存槑涓涓嬶紝澶у鐪嬪埌錛?涓弬鏁伴兘鏄紩鐢紝鑰岀涓涓槸rNextPosition錛岄【鍚嶆濅箟錛屽湪鍑芥暟榪斿洖涔嬪悗錛屽畠灝嗕細鎸囧儚涓嬩竴涓厓緇勶紝褰撶劧榪欐槸鍦ㄨ〃榪樻湭閬嶅巻瀹岀殑鏃跺欙紝鍚﹀垯錛屽畠灝嗚緗負絀猴紙NULL錛夈?/span>
銆愩戯紝鍒╃敤涓嬫爣鍙栧厓绱犵殑榪欎釜鎿嶄綔絎︼紝鍦–Map涓閲嶈澆錛岀敤鏉ヨ繑鍥炴寚瀹欿ey鍊兼暟鎹殑寮曠敤錛屼笉榪囧湪娉ㄩ噴#3澶勶紝瀵逛簬鍏堝彇"4th"榪欎釜Point鐨勫紩鐢ㄧ劧鍚庤祴鍊肩殑鐢ㄦ硶錛岀湅璧鋒潵錛屼技涔庢湁鐐硅仾鏄庤繃浜嗗ご錛屽洜涓哄湪榪欎箣鍓嶏紝鎴戜滑榪樻病鏈夋彃鍏?4th"鎵瀵瑰簲鐨勫厓緇勶紝浣嗘槸錛岀▼搴忓嵈鑳芥甯哥殑榪愯錛佷負浠涔堬紵鍏跺疄錛岃繖鏍風殑鐢ㄦ硶鏄崄鍒嗘紜殑錛屽洜涓篊Map姣曠珶涓嶆槸鏁扮粍錛屽畠鏄病鏈夎竟鐣岀殑錛屽綋CMap鍦ㄨ幏寰椾竴涓畠鏃犳硶鏌ヨ鍒扮殑Key鍊肩殑鏃跺欙紝瀹冧細灝嗚繖涓狵ey浠ュ強涓涓┖鐨勬暟鎹被鍨嬭拷鍔犲埌Hash琛ㄤ腑鍘伙紝浠庤屼繚璇佷簡涓婇潰鐨勭▼搴忓彲浠ユ棤璇殑榪愯銆?/span>
鎴戜滑宸茬粡璇磋繃錛孉RG_KEY鏄綔涓虹被鍨嬪弬鏁頒紶鍏Map鐨勶紝浣嗗茍涓嶆槸浠諱綍綾誨瀷閮藉彲浠ヤ綔涓篈RG_KEY浼犲叆鐨勩備負浠涔堬紵鐪嬫牱瀛愶紝榪欐涓嶅緱涓嶇畝鍗曠殑璇磋Hash琛ㄧ殑鏁e垪鍑芥暟浜嗐傛瘡涓狧ash琛紝鎬諱細浣跨敤涓浜涙暎鍒楀嚱鏁幫紝鐢ㄦ潵鏌ユ壘Key鎵瀵瑰簲鐨刅alue錛岀悊鎯崇姸鎬佷笅錛屾垜浠綋鐒跺笇鏈汬ash琛紝灝辨槸涓涓暟緇勶紝铏界劧榪欎笉鍙兘錛屼笉榪囪繖鏍風悊瑙o紝鍙互甯姪鎴戜滑鏇村ソ鐨勭悊瑙ash琛ㄧ殑鐗╃悊緇撴瀯錛屽氨璁╂垜浠殏鏃舵妸瀹冪湅鎴愪竴涓暟緇勫惂銆傛暟緇勬繪槸浣跨敤涓嬫爣鏉ョ洿鎺ヨ幏鍙栧厓绱犵殑瀛樺偍鍦板潃錛岃屼笅鏍囷紝鏄劇劧搴旇鏄釜闈炶礋鏁存暟錛屼粠鑰孒ash琛紝涔熷簲璇ュ叿澶囪繖鏍風殑鐗規э紝鑷沖皯蹇呴』瀛樺湪鏌愮綆楁硶鍙互浣夸紶鍏ョ殑Key鍙互鐩存帴鐨勮漿鍖栦負涓涓潪璐熺殑鏁存暟錛岃繖涔熷氨鏄疉RG_KEY鐨勯夋嫨鏍囧噯銆備粠鑰屽璞°佸紩鐢ㄦ棤璁哄浣曢兘涓嶅簲璇ヤ綔涓篈RG_KEY鎴愪負CMap鐨勭被鍨嬪弬鏁幫紝鑰宨nt銆乽nsigned int銆佹寚閽堜互鍙婂湴鍧灝辨垚涓轟簡ARG_KEY鐨勫父鐢ㄧ被鍨嬪弬鏁幫紝鍏跺疄涔熷氨鏄偅浜涚被浼間簬鏁村瀷鐨勬暟鎹被鍨嬨傚父甯哥湅鍒頒竴浜涗漢鍦ㄧ敤CMap鐨勬椂鍊欙紝璇曞浘浣跨敤CString浣滀負CMap涓瑼RG_KEY鐨勭被鍨嬪弬鏁幫紝榪欐槸搴旇琚籂姝g殑鏂瑰悜鎬ч敊璇紝浣嗘湁浜涗漢浼間箮浼氱悊鐩存皵澹殑鍙嶉┏鎴戯紝鍥犱負浠栦滑鍙戠幇綾誨瀷鍙傛暟KEY鏄彲浠ヤ嬌鐢–String鐨勶紝榪欏緢濂囨悧錛熸垜璇磋繃KEY涓嶈兘浣跨敤CString鍚楋紵涔嬫墍浠EY鍙互浣跨敤CString鑰孉RG_KEY鍗寸敤鐨勬槸LPCTSTR錛岄偅鏄洜涓篊String閲嶈澆浜唎perator==(const char*)榪欎釜鍒ょ瓑鎿嶄綔絎︼紝褰揅Map浠嶩ash琛ㄤ腑鑾峰緱KEY涔嬪悗錛屽畠浼氬皢ARG_KEY涓嶬EY鐩存帴鐩告瘮杈冦傜湡姝e瓨浜嶤Map鍐呴儴鐨勬槸KEY錛屼篃灝辨槸CString銆傝繖涔熷氨鏄負浠涔堬紝鎴戜滑緇忓父浼氱湅鍒癈Map琚疄鍖栨垚CMap<CString, LPCTSTR/*鐩稿綋浜巆onst char*錛岄潪Unicode鎯呭喌涓?/, CString錛孋String&>榪欐牱鐨勪竴涓洓涓嶅儚瀹炲寲綾葷殑鍘熷洜錛岃嚦浜嶤Map鐨勬晥鐜囦紭鍖栭棶棰橈紝鎴戜滑浼氬湪浠ュ悗鐨勬枃绔犱腑緇х畫涓庡ぇ瀹舵帰璁ㄣ?/span>
CMap鐨勭‘鏄釜寰堜笉閿欑殑鏁版嵁緇撴瀯錛屽挨鍏跺湪浣犲緩绔嬩竴涓瓧鍏哥殑鏃跺欍傛瘮濡俰dealsoft鐨勫惈涔夋槸"鏇沖厜縐戞妧"錛岃繖灝辨槸涓涓厓緇勶紝涔熷氨鏄竴涓狿air錛孠ey鏄?idealsoft"錛岃孷alue鏄?鏇沖厜縐戞妧"銆?/span>
====================================================================