锘??xml version="1.0" encoding="utf-8" standalone="yes"?>免费不卡在线视频,久久视频一区,国产精品毛片高清在线完整版http://www.shnenglu.com/guogangj/category/10228.html鍒涗綔錛屼篃鏄竴縐嶅涔?fàn)鐨剺q囩▼銆?/description>zh-cnMon, 08 Aug 2011 06:40:29 GMTMon, 08 Aug 2011 06:40:29 GMT60浠嶤++鍒癈#鐨勪竴浜涙敞鎰忎簨欏?/title><link>http://www.shnenglu.com/guogangj/archive/2011/08/08/152776.html</link><dc:creator>Jiang Guogang</dc:creator><author>Jiang Guogang</author><pubDate>Mon, 08 Aug 2011 05:03:00 GMT</pubDate><guid>http://www.shnenglu.com/guogangj/archive/2011/08/08/152776.html</guid><wfw:comment>http://www.shnenglu.com/guogangj/comments/152776.html</wfw:comment><comments>http://www.shnenglu.com/guogangj/archive/2011/08/08/152776.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/guogangj/comments/commentRss/152776.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/guogangj/services/trackbacks/152776.html</trackback:ping><description><![CDATA[<div>C++姣棤鐤戦棶鏄蔣浠跺紑鍙戝伐鍏蜂腑鐨勫伐涓氭爣鍑嗭紝浣嗚璇村仛Windows寮鍙戯紝鐜板湪鎭愭曠湅璧鋒潵榪樻槸鐢?net姣旇緝鍒掔畻錛屼嬌鐢?net鐨凜++鍙?#8220;Managed C++”錛屾垜鐪嬩簡(jiǎn)涔嬪悗鍙兂璇磋繖鍙ヨ瘽錛氳繖璐т笉鏄疌++銆傝繖閲岄『甯︽彁璧蜂竴嬈¢潰璇曠粡鍘嗭紝鏄垜闈㈣瘯鍒漢錛屾垜鍛婅瘔鏉ラ潰璇曠殑浜猴細(xì)“鎴戜滑鐩墠鐨勮蔣浠墮」鐩嬌鐢–++寮鍙戯紝娌$敤.net銆?#8221;浠栦竴鑴歌寮傚湴闂亾錛?#8220;浣犵幇鍦ㄧ敤鐨勬槸VC6錛?#8221;鎴戣錛?#8220;涓嶆槸錛屾垜鐢ㄧ殑鏄疺S2008銆?#8221;浠栬錛?#8220;閭d綘鐢ㄧ殑灝辨槸.net錛屼粠VS2003寮濮嬮兘鏄?net銆?#8221;鎴戣В閲婇亾錛?#8220;鎴戝湪鍋氭湰鍦板紑鍙戯紝娌′嬌鐢?net銆?#8221;鑰岃繖浣嶅摜浠戶緇潥鎸佽鎴戝氨鏄敤.net寮鍙戯紝鎴戝緢閮侀椃錛屼篃璁告垜浠鐨勬槸涓嶅悓鐨勮瘽錛屼簰鐩鎬箣闂存棤娉曠悊瑙e緱浜?jiǎn)銆傛昏岃█涔嬶紝Managed C++鐨勭敤鎴鋒槸鏋佸皯鐨勶紝浠庢煇縐嶆剰涔変笂璇達(dá)紝C#涓?net鑰岀敓錛岃?net涔熶負(fù)C#鑰岀敓錛岀敤C++鍋?net寮鍙戝彲鏄崐鐐逛紭鍔塊兘娌℃湁銆傝繖鏄澶栬瘽錛孫K錛岃繘鍏ユ棰樸?br /><br /><strong>1錛屾渶鏈鏈瑕佹敞鎰忕殑灝辨槸錛氬瀮鍦懼洖鏀舵満鍒?br /></strong><br />C#娌℃湁delete錛屽叾鎵樼璧勬簮涓嶉渶瑕乨elete錛屼篃涓嶈兘鏄懼紡delete錛屽畬鍏ㄧ敱.net鐨勫瀮鍦懼洖鏀跺櫒鏉ョ鐞嗐?br /><br />紼嶅井鏈夌偣楹葷儲(chǔ)鐨勬槸闈炴墭綆¤祫婧愶紝姣斿鎵撳紑鐨勬枃浠跺彞鏌勶紝鍒涘緩鐨勪綅鍥懼彞鏌勭瓑錛岃繖浜涙槸闈炴墭綆¤祫婧愶紝濡傛灉涓鐩翠笉鏄懼紡鍥炴敹錛岄偅鏈夊彲鑳戒細(xì)瓚婃潵瓚婂錛岄偅鎬庝箞鍔烇紵榪欐柟闈㈢殑闂鍦ㄧ粷澶у鏁扮殑C#鐨勪功綾嶄笂閮芥湁璁茶堪錛屾湁鏃跺欑湅寰椾漢鏅曞ご杞悜鐨勶紝鍏跺疄鎴戜滑鍙閬靛驚榪欎箞涓縐嶈鑼冿紝灝卞彲浠ュ簲瀵逛笉璇?00%錛屼篃鏈?9%鐨勬儏鍐典簡(jiǎn)錛?br /><br />綾諱腑娌℃湁闈炴墭綆¤祫婧愮殑鎯呭喌涓嬶紝鍟ラ兘涓嶇敤綆★紝涔熶笉鐢ㄥ疄鐜版瀽鏋勫嚱鏁般?br />濡傛灉綾諱腑鏈夐潪鎵樼璧勬簮錛屽垯搴旇瀹炵幇鏋愭瀯鍑芥暟錛屽茍涓斿湪鏋愭瀯鍑芥暟涓噴鏀捐祫婧愩?br />濡傛灉綾諱腑鏈夐潪鎵樼璧勬簮錛屽茍涓旀兂璁╃被浣跨敤鑰呮彁鍓嶉噴鏀炬帀榪欎簺闈炴墭綆¤祫婧愮殑璇濓紝閭e氨瀹炵幇涓涓狣ispose鐨勬柟娉曟潵閲婃斁闈炴墭綆¤祫婧愶紝鍐嶅姞涓婅繖涔堜竴琛屼唬鐮丟C.SuppressFinalize(this);浠ユ鏉ュ憡璇?net鐨勫瀮鍦懼洖鏀跺櫒錛屼笉闇瑕佸啀璋冪敤涓嬈℃瀽鏋勫嚱鏁版潵閲婃斁闈炴墭綆¤祫婧愪簡(jiǎn)銆?br /><br /><strong>2錛屽?寮曠敤錛宻truct/class</strong><br /><br />C#鐨剆truct鍜宑lass宸埆寰堝ぇ錛屼笉鍍廋++閭f牱鍑犱箮娌′粈涔堝樊鍒紝struct閫傜敤浜庡垱寤哄皬鐨勭粨鏋勶紝瀹冧嬌鐢ㄧ殑鏄間紶閫掞紝鑰岀敤class鐨勫璞′嬌鐢ㄧ殑鏄紩鐢ㄤ紶閫掋?br /><br />鍊鹼紝瀛樺湪浜庢爤鍖猴紝鑰屽紩鐢紝鍒欏瓨鍦ㄤ簬鍫嗗尯銆?br /><br />struct錛氬瓨鍦ㄤ簬鏍堝尯錛屽彲鐢╪ew鍒濆鍖栵紙涔熷彲浠ヤ笉鐢級(jí)錛屾病鏈夐粯璁ゆ瀯閫犲嚱鏁幫紙浣嗗彲浠ユ坊鍔犳瀯閫犲嚱鏁幫紝涔熷彲浠ヤ笉娣誨姞錛夛紝娌℃瀽鏋勫嚱鏁幫紝涓嶈兘琚戶鎵褲?br />class錛氬瓨鍦ㄤ簬鍫嗗尯錛屽繀欏葷敤new鍒濆鍖栵紝鏈夐粯璁ゆ瀯閫犲嚱鏁幫紝鏈夋瀽鏋勫嚱鏁幫紝褰撶劧鑳借緇ф壙鍟︺?br /><br /><strong>3錛屾敞鎰忚綆卞拰鎷嗙</strong><br /><br />鍊煎拰寮曠敤鏈夋椂鍊欏緱浜掔浉杞崲錛屾瘮濡傚綋涓涓嚱鏁伴渶瑕佸紩鐢ㄥ弬鏁幫紝鑰屼綘鍗存妸鍊間紶浜?jiǎn)杩囧幓锛岄偅涔垶瀛樺湪杩欎箞涓涓殣寮忚漿鎹㈢殑榪囩▼浜?jiǎn)锛寴q欎釜榪囩▼浼?xì)鏈夐澶栫殑鎬ц兘寮閿錛屾墍浠ヨ灝介噺閬垮厤銆傚艱漿涓哄紩鐢ㄥ彨“瑁呯”錛屽弽榪囨潵寮曠敤杞負(fù)鍊煎彨“鎷嗙”銆傝綆卞彲浠ユ槸闅愬紡鐨勶紝浣嗘媶綆變竴瀹氭槸鏄懼紡鐨勶紝濡傦細(xì)<br /><br />int i = 123;<br />object o = i; //瑁呯錛堥殣寮忥級(jí)<br />int j = (int) o; //鎷嗙錛堟樉寮忥級(jí)<br /><br /><strong>4錛屽叾瀹冧竴浜涜娉曞樊鍒?br /></strong><br />4.1 铏氭柟娉曞繀欏誨甫涓妎verride淇グ錛屽惁鍒欎細(xì)鏈墂arning銆?br />4.2 娌℃湁浜?jiǎn)C++鏋勯犲嚱鏁頒腑鐨?#8220;鍒濆鍖栧垪琛?#8221;銆?br />4.3 甯冨皵鍜屾暣鍨嬫槸涓ょ涓嶅悓綾誨瀷銆?br />4.4 switch璇彞鐨勮涓哄拰C++鐨勭暐鏈変笉鍚屻?br /><br /></div><img src ="http://www.shnenglu.com/guogangj/aggbug/152776.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/guogangj/" target="_blank">Jiang Guogang</a> 2011-08-08 13:03 <a href="http://www.shnenglu.com/guogangj/archive/2011/08/08/152776.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鐢╒C++璁塊棶鏂囨湰鏂囦歡http://www.shnenglu.com/guogangj/archive/2011/06/08/148257.htmlJiang GuogangJiang GuogangWed, 08 Jun 2011 04:26:00 GMThttp://www.shnenglu.com/guogangj/archive/2011/06/08/148257.htmlhttp://www.shnenglu.com/guogangj/comments/148257.htmlhttp://www.shnenglu.com/guogangj/archive/2011/06/08/148257.html#Feedback2http://www.shnenglu.com/guogangj/comments/commentRss/148257.htmlhttp://www.shnenglu.com/guogangj/services/trackbacks/148257.html闃呰鍏ㄦ枃

]]>
WM_SIZE鍦╓M_CREATE涔嬪墠錛?/title><link>http://www.shnenglu.com/guogangj/archive/2010/10/21/130733.html</link><dc:creator>Jiang Guogang</dc:creator><author>Jiang Guogang</author><pubDate>Thu, 21 Oct 2010 05:01:00 GMT</pubDate><guid>http://www.shnenglu.com/guogangj/archive/2010/10/21/130733.html</guid><wfw:comment>http://www.shnenglu.com/guogangj/comments/130733.html</wfw:comment><comments>http://www.shnenglu.com/guogangj/archive/2010/10/21/130733.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/guogangj/comments/commentRss/130733.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/guogangj/services/trackbacks/130733.html</trackback:ping><description><![CDATA[鎴戜竴鐩磋涓哄垱寤轟竴涓獥鍙g殑鏃跺欙紝紿楀彛澶勭悊榪囩▼澶勭悊WM_CREATE鏄湪澶勭悊WM_SIZE涔嬪墠鐨勶紝鎵浠ュ緢澶氬垵濮嬪寲鐨勪笢瑗塊兘鏀懼湪WM_CREATE澶勬潵鍋氾紝浣嗘渶榪戝紕涓涓▼搴忓彂鐜板埌浜?jiǎn)WM_SIZE澶勫嚭閿欙紝鍘熷洜鏄┖鎸囬拡錛岃岃繖涓寚閽堝簲璇ユ槸鍦╓M_CREATE鐨勬椂鍊欒璧嬪肩殑錛屽鎬簡(jiǎn)錛岄毦閬揥M_SIZE浼?xì)鍦╓M_CREATE涔嬪墠錛熶簬鏄涓や釜鏂偣錛屼笉鐪嬩笉鐭ラ亾錛屼竴鐪嬭繕鐪熺殑濡傛錛屽涓嬪浘錛?br><img border=0 alt="" src="http://www.shnenglu.com/images/cppblog_com/guogangj/size_before_create_1.png" width=684 height=291><br>紼嬪簭姣忔鎬繪槸鍏堣Е鍒癢M_SIZE鐨勮繖涓柇鐐癸紝闅鵑亾鎴戠悊瑙d竴鐩存湁璇紵浜庢槸鎴戝垱寤轟簡(jiǎn)涓涓猦ello world紼嬪簭錛岃皟璇曚簡(jiǎn)鍗婂ぉ錛屽張鍙戣娌℃湁榪欎釜闂錛學(xué)M_CREATE鎬繪槸鍦╓M_SIZE涔嬪墠錛屾垜灝濊瘯鍦ㄥ埆澶勯噸鐜伴棶棰橈紝鏃犳灉……鐜板湪錛屼綘鍐嶄粩緇嗙湅涓涓嬩笂鍥撅紝浣犲彂鐜伴棶棰樹(shù)簡(jiǎn)涔堬紵<br><br>鎴戞兂緇忚繃鎴戣繖涔堟彁紺猴紝浣犲簲璇ョ煡閬撲簡(jiǎn)錛氬師鍥犲氨鏄疻M_CREATE榪欎釜鏂偣鍓嶄竴琛岀殑SetWindowLong榪欎釜璋冪敤錛岃繖涓皟鐢ㄤ細(xì)寮曡搗涓涓猈M_SIZE浜嬩歡錛屾墍浠ヨ繖灝卞埗閫犱簡(jiǎn)WM_SIZE鍦╓M_CREATE涔嬪墠榪欎釜鍋囪薄銆傚鐞嗚繖涓棶棰樺緢綆鍗曪紝鎶奡etWindowLong榪欒鎷挎帀錛岀劧鍚庢妸WS_NONAVDONEBUTTON榪欎釜灞炴т氦緇機(jī)reateWindow錛屽涓嬪浘錛?br><img border=0 alt="" src="http://www.shnenglu.com/images/cppblog_com/guogangj/size_before_create_2.png" width=835 height=140><br>榪欐牱灝卞ソ浜?jiǎn)锛屾垜鎯硻遛Z究鎻愪釜闂錛屾垜鍦ㄨ璁′竴涓▼搴忕殑鏃跺欙紝涔熺鍒頒簡(jiǎn)“甯冨眬”鍜?#8220;鍔犺澆”鐨勫厛鍚庨棶棰橈紝鍥犱負(fù)甯冨眬鍙兘闇瑕侀噸鏂拌皟鏁村姞杞界殑璧勬簮錛岃屽姞杞借祫婧愬張闇瑕佸弬鑰冨竷灞鐨勫昂瀵革紝鐢變簬鍔熻兘涓婄殑鍘熷洜錛屾垜蹇呴』鎶婁袱鑰呭垎寮錛屾墍浠ュ瓨鍦ㄦ垜鍓嶉潰璇寸殑榪欎釜鍏堥浮鍏堣泲鐨勯毦棰樸傛渶鍚庢垜鏄繖涔堝紕鐨勶紝鍋氫竴涓?#8220;璧勬簮鏄惁宸茬粡鍔犺澆”鐨勬爣蹇楋紝鐒跺悗鎬繪槸鍏?#8220;甯冨眬”錛屽竷灞鐨勬椂鍊欐鏌ヨ繖涓爣蹇楋紝濡傛灉娌℃湁璧勬簮鐨勫姞杞斤紝閭e氨鍙洿鏀瑰昂瀵稿弬鏁拌屼笉璋冩暣璧勬簮錛岃繖鏍風(fēng)湅璧鋒潵灝辨病浠涔堥棶棰樹(shù)簡(jiǎn)錛屼粠閫昏緫涓婃潵璇存垜鐨勮璁$‘瀹炴槸WM_SIZE浼樺厛浜嶹M_CREATE……<br><br>嬈㈣繋瀵硅繖浜涙柟闈㈢殑璁捐闂鐣欒█璁ㄨ銆? <img src ="http://www.shnenglu.com/guogangj/aggbug/130733.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/guogangj/" target="_blank">Jiang Guogang</a> 2010-10-21 13:01 <a href="http://www.shnenglu.com/guogangj/archive/2010/10/21/130733.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鎺у埗鍙?Console)紼嬪簭鍜學(xué)indows紼嬪簭鍒板簳鏈変粈涔堝樊鍒紵http://www.shnenglu.com/guogangj/archive/2010/09/15/126631.htmlJiang GuogangJiang GuogangWed, 15 Sep 2010 02:01:00 GMThttp://www.shnenglu.com/guogangj/archive/2010/09/15/126631.htmlhttp://www.shnenglu.com/guogangj/comments/126631.htmlhttp://www.shnenglu.com/guogangj/archive/2010/09/15/126631.html#Feedback0http://www.shnenglu.com/guogangj/comments/commentRss/126631.htmlhttp://www.shnenglu.com/guogangj/services/trackbacks/126631.html榪欐槸鎴戝湪銆奝rogramming Microsoft Windows with C#銆嬶紙姝や功浣滆呮槸澶у悕榧庨紟鐨凜harles Petzold錛変竴涔︿腑鎵懼埌鐨勬弿榪幫細(xì)

This compiler switch doesn't do anything very profound. It really only sets a flag in the executable file that indicates how the program is to be loaded an run. If an executable is flagged as a Console Application and is started from Windows, the Windows operating system creates a Command Prompt window that launches the program and displays any console output from the program. If the console application is started from within the Command Prompt window, the MS-DOS promptdoesn't return until the program terminateds. If the executable is flagged as a Windows Application, no Command Prompt window is created. Any console output from the program goes into the bit bucket. If you start such a program from the Command Prompt window, the MS-DOS prompt appears again right after the program is launched. The point is this: nothing bad happens if you compile a Windows Forms application as a console application!

浣滆呬箣鍓嶆彁鍒扮殑緙栬瘧閫夐」鏄?target:exe鍜?target:winexe錛屽墠鑰呯敓鎴愭帶鍒跺彴紼嬪簭錛屽悗鑰呯敓鎴怶indows紼嬪簭錛岃繖鏄疌#鐨勭紪璇戝櫒錛岃孷C++鐨勮繛鎺ュ櫒鐨勯夐」鍗存湁浜涗笉鍚岋紝鐪嬭繖寮犲浘錛?br>
濡傛灉浣犲湪搴旂敤紼嬪簭鍚戝閲屾寚瀹氱殑鏄竴涓猈indows紼嬪簭錛岃屼綘鍚庢潵鍗村湪榪欎釜榪炴帴鍣ㄩ夐」閲岄夋嫨Console錛岄偅浼?xì)鎬庝箞鏍峰憿錛熲斺斾細(xì)榪炴帴澶辮觸錛佸洜涓篤C++榪炴帴鍣ㄨ涓篊onsole紼嬪簭鍜學(xué)indows紼嬪簭鐨勫叆鍙e嚱鏁版槸涓嶅悓錛岃繖鏍風(fēng)畝鍗曠殑涓鏀瑰畠浼?xì)鎵句笉鍒板叆鍙e嚱鏁板Q屾墍浠ヨ繛鎺ュけ璐ャ?br>
浣嗕笉綆¤繖鏍鳳紝閫氳繃Charles Petzold鐨勮繖孌墊弿榪幫紝鎴戜滑瀵笴onsole紼嬪簭鍜學(xué)indows紼嬪簭鐨勮璇嗗簲璇ユ槸娌′粈涔堥棶棰樹(shù)簡(jiǎn)錛屼袱鑰呭叾瀹炲茍娌℃湁浠涔堟牴鏈笉鍚岋紝鍙槸Windows鏍規(guī)嵁PE鏂囦歡涓殑鏍囪瘑錛岀敤紼嶅井涓嶅悓鐨勬柟娉曟潵榪愯榪欎袱縐嶇▼搴忚屽凡銆?br>
BTW錛歐indows紼嬪簭鍙互鍒涘緩鑷繁鐨勬帶鍒跺彴錛堝弬鑰傾llocConsole絳堿PI錛夛紝鎺у埗鍙扮▼搴忎篃鍙互鍒涘緩紿楀彛銆?/p>

]]>
Windows寮傚父澶勭悊綆浠?/title><link>http://www.shnenglu.com/guogangj/archive/2010/08/11/123071.html</link><dc:creator>Jiang Guogang</dc:creator><author>Jiang Guogang</author><pubDate>Wed, 11 Aug 2010 07:30:00 GMT</pubDate><guid>http://www.shnenglu.com/guogangj/archive/2010/08/11/123071.html</guid><wfw:comment>http://www.shnenglu.com/guogangj/comments/123071.html</wfw:comment><comments>http://www.shnenglu.com/guogangj/archive/2010/08/11/123071.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/guogangj/comments/commentRss/123071.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/guogangj/services/trackbacks/123071.html</trackback:ping><description><![CDATA[浠ュ墠鏈夎繖涔堜釜闂錛屽鏋滀唬鐮佷笉灝忓績(jī)鍙戠敓浜?jiǎn)涓涓紓甯革紝姣斿闄ら浂寮傚父錛屼絾鎴戜笉鎯寵浠g爜灝辨寮規(guī)緇撴潫錛屾垜鎯寵浠g爜蹇界暐鎺夎繖涓紓甯哥戶緇繍琛岋紝閭e簲璇ユ庝箞鍔烇紵<br> <div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000"><br>{<br>    </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> a</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br>    </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> b</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>    </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> c</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">a</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">b;<br>}<br></span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000">(<img src="http://www.shnenglu.com/Images/dot.gif">)<br>{<br>    printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Ignore that error and continue to work!\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br>}</span></div> 榪欐浠g爜騫朵笉濂忔晥錛屽洜涓洪櫎闆墮敊璇槸涓涓郴緇熷紓甯革紝鑰屼笉鏄竴涓狢++綾誨瀷寮傚父錛屾墍浠atch涓嶅埌鐨勶紝榪欑寮傚父綾誨瀷涔熷氨娌℃硶閫氳繃榪欑鏂瑰紡鏉ュ鐞嗕簡(jiǎn)銆傚繀欏葷敤Windows鐗規(guī)湁鐨勫紓甯稿鐞嗘柟寮忥細(xì)<br> <div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000">__try<br>{<br>    </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> a</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br>    </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> b</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>    </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> c</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">a</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">b;<br>}<br>__except(EXCEPTION_EXECUTE_HANDLER)<br>{<br>    printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Ignore that error and continue to work!\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br>}</span></div> 榪欐牱灝辨病鏈夐棶棰樹(shù)簡(jiǎn)錛岃屼笖鎴戜滑鍙互鍦╛_except涓皟鐢℅etExceptionCode鏉ヨ幏寰楀紓甯鎬唬鐮侊紝姣斿榪欎釜渚嬪瓙鐨勫紓甯鎬唬鐮佹槸0xC0000094錛岃〃紺?#8220;鏁村瀷闄ら浂寮傚父”銆傝瘯鍥捐闂竴涓潪娉曞湴鍧瀵艱嚧鐨勫紓甯鎬篃鍚屾牱鍙互閫氳繃榪欑鏂瑰紡鏉ユ崟鎹夊埌銆備緥濡傦細(xì)<br> <div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000">__try<br>{<br>    </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> p </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> NULL;<br>    </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">p </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">;<br>}<br>__except(EXCEPTION_EXECUTE_HANDLER)<br>{<br>    printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Exception[%0X] occured!\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, GetExceptionCode());<br>}</span></div> 寮傚父浠g爜0xC0000005錛岃繖涓垜浠寰楀お澶氫簡(jiǎn)錛屼篃灝辨槸闈炴硶鍦板潃璁塊棶寮傚父銆?br>榪欑鏂瑰紡鐨勫紓甯稿鐞嗚繕鏈変釜濡欑敤錛岄偅灝辨槸鐢ㄦ潵鍙栦唬goto璇彞銆傚ぇ鑷磋繖鏍鳳細(xì)<br> <div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000">__try<br>{<br>    BOOL rtn </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> Foo1();<br>    </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">rtn)<br>        __leave;<br><br>    rtn </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> Foo2();<br>    </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">rtn)<br>        __leave;<br><br>    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">Blah Blah Blah<img src="http://www.shnenglu.com/Images/dot.gif"></span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">}<br>__finally<br>{<br>    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">Do some job to release the resources.</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">}</span></div> 榪涗竴姝ヤ俊鎭鏌ョ湅MSDN錛屾煡鎵?#8220;__try”絳夊叧閿瓧灝卞彲浠ヤ簡(jiǎn)銆?br>鍊煎緱娉ㄦ剰鐨勬槸錛岃繖縐嶆柟寮忕殑寮傚父澶勭悊涓嶈兘鍜孋++椋庢牸鐨勫紓甯稿鐞嗗悓鏃朵嬌鐢紝鍚﹀垯浼?xì)缂栬瘧閫氫笉榪囥? <img src ="http://www.shnenglu.com/guogangj/aggbug/123071.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/guogangj/" target="_blank">Jiang Guogang</a> 2010-08-11 15:30 <a href="http://www.shnenglu.com/guogangj/archive/2010/08/11/123071.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>浣跨敤瀹夊叏瀛楃涓插嚱鏁?/title><link>http://www.shnenglu.com/guogangj/archive/2010/08/10/122923.html</link><dc:creator>Jiang Guogang</dc:creator><author>Jiang Guogang</author><pubDate>Tue, 10 Aug 2010 05:12:00 GMT</pubDate><guid>http://www.shnenglu.com/guogangj/archive/2010/08/10/122923.html</guid><wfw:comment>http://www.shnenglu.com/guogangj/comments/122923.html</wfw:comment><comments>http://www.shnenglu.com/guogangj/archive/2010/08/10/122923.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/guogangj/comments/commentRss/122923.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/guogangj/services/trackbacks/122923.html</trackback:ping><description><![CDATA[鍏堢湅鐪嬪彲鑳芥湁闂鎴栬呮湁姝т箟鐨勪唬鐮侊細(xì)<br> <div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000">TCHAR </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">p </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> TEXT(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ABC涓枃</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br>INT iLen </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> lstrlen(p);</span></div> lstrlen榪斿洖鐨勫埌搴曟槸瀛楃涓茬殑瀛楃鏁扮洰錛岃繕鏄瓧絎︿覆鎵鍗犳嵁鐨勫瓧鑺傛暟鍛紵鍐嶇湅錛?br> <div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000">TCHAR </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">p </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> TEXT(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">more than 10 characters.</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br>TCHAR szBuff[</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">];<br>lstrcpy(szBuff, p);</span></div> 鏄庢樉瑕佸鍒跺埌szBuff鐨勫瓧絎︿覆姣攕zBuff鏈韓瑕侀暱錛岄偅浼?xì)瀵艰嚧浠涔堥棶棰樺憿錛熷鏋滆澶嶅埗鐨勫瓧絎︿覆鐨勯暱搴︽濂藉氨鏄?0錛岄偅szBuff浼?xì)涓嶄細(xì)鍦ㄦ湯灏惧姞涓婁竴涓瓧絎︿覆緇撴潫鏍囧織'\0'鍛紵<br><br>浣跨敤鏂扮殑瀹夊叏瀛楃涓插嚱鏁頒箣鍚庯紝涓婇潰鐨勯兘涓嶆槸闂?shù)簡(jiǎn)锛屽叧浜庡畨鍏ㄥ瓧绗︿覆鍑芥晭图屾妧鏈粏鑺傝繕鏄緢澶氱殑錛屼絾鎴戜滑涓嶇敤綆¢偅涔堝錛屾垜浠彧闇瑕佸叧蹇?jī)鎴戜滑鐢ㄥ緱鏈澶氱殑鍑犱釜灝卞彲浠ヤ簡(jiǎn)銆?br><br> <table style="WIDTH: 320px; BORDER-COLLAPSE: collapse" border=1 cellSpacing=0 cellPadding=3> <tbody> <tr> <td>鏃у嚱鏁?/td> <td>鏂板嚱鏁幫紙瀛楃錛?/td> <td>鏂板嚱鏁幫紙瀛楄妭錛?/td> </tr> <tr> <td>lstrlen</td> <td>StringCchLength</td> <td>StringCbLength</td> </tr> <tr> <td>lstrcpy</td> <td>StringCchCopy</td> <td>StringCbCopy</td> </tr> <tr> <td>lstrcat</td> <td>StringCchCat</td> <td>StringCbCat</td> </tr> <tr> <td>wsprintf</td> <td>StringCchPrintf</td> <td>StringCbPrintf</td> </tr> </tbody> </table> <br>浣犱細(xì)鍙戠幇錛屼竴涓棫鐨勫嚱鏁板搴斾簡(jiǎn)涓や釜鏂扮殑鍑芥暟錛岀悊瑙h繖涓茍涓嶉毦錛屽洜涓烘柊鐨勫嚱鏁板ぇ澶氶渶瑕佷綘鎸囧畾涓涓?#8220;鏈闀塊暱搴?#8221;錛岄偅榪欎釜闀垮害絀剁珶鎸囩殑鏄瓧絎︽暟鐩繕鏄瓧鑺傞暱搴﹀憿錛熷鏋滄寚鐨勬槸瀛楃鏁扮洰鐨勮瘽錛岄偅灝辯敤Cch緋誨垪鐨勶紝鍚﹀垯灝辯敤Cb緋誨垪鐨勩傚ソ鎴戜滑鏀逛竴涓嬩笂闈㈢殑浠g爜錛?br> <div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000">TCHAR </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">p </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> TEXT(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ABC涓枃</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br>size_t iLen;<br></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">We want to get the character number</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">StringCchLength(p, STRSAFE_MAX_CCH, </span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">iLen);</span></div> 榪欐牱灝辨瘮杈冨ソ鍦伴伩鍏嶄簡(jiǎn)姝т箟銆?br> <div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000"> BUFFER_SIZE 10</span><span style="COLOR: #000000"><br>TCHAR </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">p </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> TEXT(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">more than 10 characters.</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br>TCHAR szBuff[BUFFER_SIZE];<br>StringCchCopy(szBuff, BUFFER_SIZE, p);<br></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">szBuff is "more than" now, it always ends with a '\0'</span></div> 榪欐牱鐨勫瓧絎︽嫹璐濅篃灝變笉瀛樺湪瓚婄晫鐨勯棶棰樹(shù)簡(jiǎn)錛屽茍涓旇兘淇濊瘉瀛楃涓叉繪槸鑳戒互'\0'緇撴潫銆傚叾瀹冪殑鍢涳紝璇昏呭氨涓句竴鍙嶄笁鑷繁鐪嬬湅浜?jiǎn)锛屽熀鏈敤鐢q樻槸娌¢棶棰樼殑錛屽鏋滄湁鍏磋叮榪樺彲浠ョ洿鎺ョ湅鐪嬭繖浜涘瓧絎︿覆鍑芥暟鐨勪唬鐮侊紝涓嶇畝鍗曠殑鍝︺?br><br>鏈鍚庯紝鍒繕?shù)簡(jiǎn)鋴社敤鐨勬椂鍊欏寘鍚玸trsafe.h澶存枃浠躲? <img src ="http://www.shnenglu.com/guogangj/aggbug/122923.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/guogangj/" target="_blank">Jiang Guogang</a> 2010-08-10 13:12 <a href="http://www.shnenglu.com/guogangj/archive/2010/08/10/122923.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>璁㏕inyXML淇濆瓨鏂囦歡涓篣TF-8鏍煎紡http://www.shnenglu.com/guogangj/archive/2010/07/05/119351.htmlJiang GuogangJiang GuogangMon, 05 Jul 2010 07:31:00 GMThttp://www.shnenglu.com/guogangj/archive/2010/07/05/119351.htmlhttp://www.shnenglu.com/guogangj/comments/119351.htmlhttp://www.shnenglu.com/guogangj/archive/2010/07/05/119351.html#Feedback2http://www.shnenglu.com/guogangj/comments/commentRss/119351.htmlhttp://www.shnenglu.com/guogangj/services/trackbacks/119351.htmlTinyXML鏄釜濂戒笢瑗匡紝榪欎釜涓嶇敤鎴戝璇翠簡(jiǎn)錛屾垜鐢ㄥ畠鍋氳繃濂藉嚑涓」鐩紝浣嗚繖鍑犱釜欏圭洰閮藉彧鏄粠xml鏂囦歡涓幏鍙栦俊鎭紝娌℃湁娑夊強(qiáng)鍒板啓鏂囦歡錛屾渶榪戦渶瑕佺敓鎴恱ml鐨勯厤緗枃浠訛紝鎵嶆敞鎰忓埌榪欎釜闂錛岄偅灝辨槸TinyXML浼間箮涓嶈兘淇濆瓨鏂囦歡涓篣TF-8鏍煎紡銆?/p>

鏂囨。涓婂氨璇存槑浜?jiǎn)锛孴inyXML鏄畬鍏ㄦ敮鎸乁TF-8鐨勶紝鍙互灝濊瘯load涓涓猆TF-8鏍煎紡鐨剎ml鏂囦歡錛屽畬鍏ㄦ病鏈夐棶棰橈紝閭g幇鍦ㄩ棶棰樻槸load浜?jiǎn)涓涓猆TF-8鏂囦歡鍚庯紝鏂囦歡涓殑瀛楃涓詫紝鍦═iXmlDocument瀵硅薄涓紝鍒板簳鏄粈涔堟牸寮忥紵TinyXML鍦╨oad瀹冧箣鍚庝細(xì)涓嶄細(xì)鐩存帴鎶奤TF-8鏍煎紡杞負(fù)Unicode鏍煎紡錛熲斺斾笉浼?xì)锛屼皋Z粈涔堬紵鍥犱負(fù)TinyXML鍦ㄧ紪鍐欑殑鏃跺欐槸鎶婅嚜宸卞畾浣嶄負(fù)涓涓瘮杈冨崟綰殑C++ Lib錛屽畠娌℃湁浣跨敤浠諱綍Windows鐩稿叧鐨凙PI錛屽寘鎷緢閲嶈鐨勪袱涓紪鐮佽漿鎹㈠嚱鏁癢ideCharToMultiByte鍜孧ultiByteToWideChar錛屽畠閮芥病鐢紝瀵逛笉鍚屽鉤鍙幫紝緙栫爜杞崲鍑芥暟鍙兘鏄笉鍚岀殑錛屽洜姝inyXML涓嶄細(xì)鐢昏泧娣昏凍鍦版彁渚涜繖涓漿鎹紝涔熷氨鏄錛屽鏋滀綘鐨剎ml鏂囦歡錛圲TF-8鏍煎紡錛変腑濡傛灉鏈変腑鏂囩殑璇濓紝鐢═inyXML鍔犺澆榪涙潵涔嬪悗錛屼緷鏃ф槸UTF-8鐨勶紝涓嶇粡榪囪漿鎹㈢洿鎺rint鍑烘潵鐨勮瘽錛屽氨鏄貢鐮佷簡(jiǎn)錛屾墍浠ヨ緇忚繃涓涓猆TF-8鍒癠nicode鐨勮漿鎹紝杞崲浠g爜鎴戣繖閲屽氨涓嶅啓浜?jiǎn)銆傚啀璇翠竴涓嬶紝TinyXML澹扮О瀵筓TF-8鐨勬敮鎸佽〃紺哄畠璁よ瘑UTF-8鐨剎ml鏂囦歡錛屼絾騫朵笉琛ㄧず瀹冭嚜鍔ㄥUTF-8鐨勬枃鏈繘琛岃漿鎹€?/p>



]]>
闈濵FC紼嬪簭浣跨敤TRACEhttp://www.shnenglu.com/guogangj/archive/2010/06/09/117453.htmlJiang GuogangJiang GuogangWed, 09 Jun 2010 03:19:00 GMThttp://www.shnenglu.com/guogangj/archive/2010/06/09/117453.htmlhttp://www.shnenglu.com/guogangj/comments/117453.htmlhttp://www.shnenglu.com/guogangj/archive/2010/06/09/117453.html#Feedback4http://www.shnenglu.com/guogangj/comments/commentRss/117453.htmlhttp://www.shnenglu.com/guogangj/services/trackbacks/117453.html鎴戜滑閮界煡閬揗FC鏈変釜寰堟湁鐢ㄧ殑瀹忥紝鍙玊RACE錛屽畠鐢ㄨ搗鏉ヨ窡printf涓鏍風(fēng)畝鍗曪紝鑳界洿鎺ュ湪VC++鐨刼utput紿楀彛涓緭鍑?guó)櫚冭瘯淇℃伅锛屼絾闈濵FC鐨刾roject鍗存病鏈夎繖涓畯錛屽彧鑳界敤OutputDebugString榪欎釜API杈撳嚭錛岃孫utputDebugString榪欎釜API鍗翠笉鏀寔綾諱技printf榪欐牱鐨勮緭鍑烘牸寮忥紝鑰屼笖涓嶈兘鍦≧elease鐗堟湰涓嚜鍔ㄥ叧闂紝浜庢槸鎴戣嚜宸卞啓浜?jiǎn)涓涓紝鍏跺疄瀹炵幇璧鋒潵榪樻槸铔畝鍗曠殑錛屼笂浠g爜錛?/p>
#ifdef _DEBUG
#define MYTRACE  DbgStrOut
#else
#define MYTRACE
#endif

// My debug output function
void DbgStrOut(const TCHAR *fmt, );
鎶婅繖涓畾涔夊啓鍦ㄩ緙栬瘧澶翠腑錛堥粯璁ゆ槸stdafx.h錛夛紝灝辮兘寰堟柟渚垮湪鍒璋冪敤浜?jiǎn)銆傝繖涓狹YTRACE鐨勪綔鐢ㄥ氨鐩稿綋浜嶵RACE銆備笅闈㈡槸鍐欏湪cpp鏂囦歡涓殑浠g爜銆?br>
void DbgStrOut(const TCHAR *fmt, )
{
    TCHAR szOutStr[
512];

    va_list ap;
    va_start(ap, fmt);
    vswprintf(szOutStr, fmt, ap);
    va_end(ap);

    OutputDebugString(szOutStr);
}
榪欐牱灝卞彲浠ヤ簡(jiǎn)錛屾垜灝濊瘯浜?jiǎn)Windows Mobile鐨勯」鐩紝涔熸槸鍙互閫氳繃鐨勶紝鑰屼笖鏀寔TCHAR瀛楃涓詫紝涔熷氨鏄鍙互鐢║nicode銆?)

]]>
鎶婂唴瀛樻暟鎹漿鍙樹(shù)負(fù)嫻?/title><link>http://www.shnenglu.com/guogangj/archive/2010/04/02/111421.html</link><dc:creator>Jiang Guogang</dc:creator><author>Jiang Guogang</author><pubDate>Fri, 02 Apr 2010 05:11:00 GMT</pubDate><guid>http://www.shnenglu.com/guogangj/archive/2010/04/02/111421.html</guid><wfw:comment>http://www.shnenglu.com/guogangj/comments/111421.html</wfw:comment><comments>http://www.shnenglu.com/guogangj/archive/2010/04/02/111421.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/guogangj/comments/commentRss/111421.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/guogangj/services/trackbacks/111421.html</trackback:ping><description><![CDATA[<span style="FONT-FAMILY: 瀹?huà)浣?>濡傞錛岀敤榪欑鏂規(guī)硶鍗沖彲錛?br> <div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000">#include </span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">strstream</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000"> std;<br><br></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">鍋囪pData鎸囧悜浜?jiǎn)鍐呭瓨?shù)腑浣犳兂瑕佽漿鍙樹(shù)負(fù)嫻佺殑鏁版嵁<br></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">iLen鏄暟鎹暱搴?/span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">strstreambuf buff(pData, iLen);<br>istream xmlStream(</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">buff);<br><br></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">xmlStream涔熷氨鏄綘瑕佺殑嫻佷簡(jiǎn)</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">xmlStream</span><span style="COLOR: #000000">>></span><span style="COLOR: #000000">xmldoc;</span></div> 浣犲茍涓嶇敤鎷呭績(jī)strstreambuf浼?xì)棰濆鍗犵敤浠涔堢┖闂達(dá)紝瀹冨彧鏄妸瀹冨叾涓殑涓涓垚鍛樻寚鍚戜簡(jiǎn)鍐呭瓨?shù)腑鐨勬暟鎹殑鍦板潃鑰屽凡銆?br></span> <img src ="http://www.shnenglu.com/guogangj/aggbug/111421.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/guogangj/" target="_blank">Jiang Guogang</a> 2010-04-02 13:11 <a href="http://www.shnenglu.com/guogangj/archive/2010/04/02/111421.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鏈綆鏄撳縐板姞瀵?/title><link>http://www.shnenglu.com/guogangj/archive/2009/09/29/97523.html</link><dc:creator>Jiang Guogang</dc:creator><author>Jiang Guogang</author><pubDate>Tue, 29 Sep 2009 02:34:00 GMT</pubDate><guid>http://www.shnenglu.com/guogangj/archive/2009/09/29/97523.html</guid><wfw:comment>http://www.shnenglu.com/guogangj/comments/97523.html</wfw:comment><comments>http://www.shnenglu.com/guogangj/archive/2009/09/29/97523.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/guogangj/comments/commentRss/97523.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/guogangj/services/trackbacks/97523.html</trackback:ping><description><![CDATA[<p>鎴戜滑鏃ュ父宸ヤ綔涓粡甯歌瀵逛竴浜涗笢瑗胯繘琛屽姞瀵嗭紝鍙夌殑鍔犲瘑鏂規(guī)硶褰撶劧寰堝浜?jiǎn)锛學(xué)indows閮借嚜甯︿簡(jiǎn)鍔犲瘑搴擄紝浣嗗瘑鐮佸鏂歸潰鐨勪笢瑗垮疄鍦ㄤ護(hù)鎴戝ご澶э紝鍙兘鍥犱負(fù)鎴戜粠灝忓寮濮嬫暟瀛︿竴鐩存病瀛﹀ソ鐨勭紭鏁咃紝鑰屾垜浠旂粏鑰冭檻涔嬪悗鍙戣錛氭垜浠淇℃伅鍔犲瘑錛屼笉涓瀹氭槸鍑?guó)檱簬浠涔?#8220;top security”鐨勫師鍥狅紝澶у鍙兘浠呬粎鏄笉鎯寵鐢ㄦ埛鐪嬪埌鍏蜂綋鐨勬枃浠剁殑緇撴瀯鎴栦繚鎶や竴浜涗釜浜洪殣縐佷俊鎭紝涔熷氨鏄瀵瑰畨鍏ㄧ殑瑕佹眰涓鑸紝娌″繀瑕佸紩鍏ュお榪囬噸閲忕駭鐨勪笢瑗匡紝鏈濂芥槸闈炲父蹇嵎銆侀珮鏁堝拰杞婚噺鐨勩傞偅鏈枃鎻愪緵浜?jiǎn)涓縐嶆柟娉曪紝鑳借浣犵殑淇℃伅鐪嬭搗鏉ヨ寰堝ソ鍦板姞榪囧瘑浜?jiǎn)锛岒q朵笖浣犳牴鏈笉闇瑕佸幓鐮旂┒浠涔堝瘑鐮佸錛屼篃涓嶉渶瑕佸紩鍏ヤ粈涔堝簽澶х殑Lib錛屽洜涓轟唬鐮佸氨閭d箞鍑犺銆?/p> <p>鍐欒繖涓▼搴忕殑鏃跺欏叾瀹炴垜鏄兂瑕佽繖涔堜竴縐嶅姞瀵嗘柟娉曪細(xì)鍋囧鏄庢枃鍙湁涓涓瓧鑺傦紝閭e姞瀵嗗嚭鏉ョ殑瀵嗘枃搴旇涔熷彧鏈変竴涓瓧鑺傘傝屽疄闄呬笂鍒漢瀹炵幇濂界殑AES綆楁硶鍔犲瘑鍑烘潵鐨勫瘑鏂囬氬父閮借甯︿笂涓涓查殢鏈烘暟錛屼笉澶鍚堟垜鐨勮姹傘?/p> <p>娌℃湁浠涔坕nclude錛屾病鏈変粈涔圠IB錛屾洿娌℃湁浠涔圖LL錛屼唬鐮佸啀綆鍗曚笉榪囷紝浣嗘垜淇濊瘉瀹冨緢鏈夋晥錛孫K錛屼笉澶氳浜?jiǎn)锛岀湅浠g爜锛?xì)</p> <div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000">#include </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">String.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br><br></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">鍔犲瘑鍜岃В瀵嗭紝鍏跺疄榪欎袱涓嚱鏁板畬鍏ㄧ浉鍚岀殑錛岀畝鍗曡搗瑙佸槢錛屽彟澶栨垜灞呯劧鍏佽瀵嗙爜涓虹┖錛屼篃鏄畝鍗曡搗瑙?/span><span style="COLOR: #008000"><br></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> JiangEncode(unsigned </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">pBuff, </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> iBuffLen, </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">pKey</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">NULL, </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> iKeyLen</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> JiangDecode(unsigned </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">pBuff, </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> iBuffLen, </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">pKey</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">NULL, </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> iKeyLen</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">);<br><br></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">榪欎釜main鍑芥暟鏄敤鏉ユ祴璇曠殑</span><span style="COLOR: #008000"><br></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000"> TEST_LEN 100</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> main(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> argc, </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> argv[])<br>{<br> unsigned </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000"> totest[TEST_LEN];<br> memcpy(totest, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">012345678901234567890123456789012345678901234567890123456789\</span><span style="COLOR: #000000"><br></span><span style="COLOR: #000000">0123456789012345678901234567890123456789</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, 100);</span><span style="COLOR: #000000"><br></span><span style="COLOR: #000000"><br> JiangEncode(totest, TEST_LEN, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">J~xye</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">6</span><span style="COLOR: #000000">);<br><br> </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> i;<br> </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">; i</span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">TEST_LEN; i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br> {<br>  </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">((i</span><span style="COLOR: #000000">%</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)<br>   printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br>  printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, totest[i]);<br> }<br><br> printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><br> JiangDecode(totest, TEST_LEN, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">J~xye</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">6</span><span style="COLOR: #000000">);<br><br> </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">; i</span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">TEST_LEN; i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br> {<br>  </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">((i</span><span style="COLOR: #000000">%</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)<br>   printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br>  printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, totest[i]);<br> }<br><br> </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>}<br><br></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">浜ゆ崲涓や釜BYTE</span><span style="COLOR: #008000"><br></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> Swap2Byte(unsigned </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> v1, unsigned </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> v2)<br>{<br> </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">v1 </span><span style="COLOR: #000000">^=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">v2;<br> </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">v2 </span><span style="COLOR: #000000">^=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">v1;<br> </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">v1 </span><span style="COLOR: #000000">^=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">v2;<br>}<br><br></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> GetMyCypher(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> pKey, </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> iKeyLen, unsigned </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> pMyCypher)<br>{<br> </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">鍘熷鍔犲瘑绱㈠紩</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> unsigned </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000"> cypherOrg[</span><span style="COLOR: #000000">256</span><span style="COLOR: #000000">] </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"><br> {<br>  </span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">15</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">17</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">51</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">85</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">255</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">26</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">46</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">114</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">150</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">161</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">248</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">19</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">53</span><span style="COLOR: #000000">, <br>  </span><span style="COLOR: #000000">95</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">225</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">56</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">72</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">216</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">115</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">149</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">164</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">247</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">6</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">30</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">34</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">102</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">170</span><span style="COLOR: #000000">, <br>  </span><span style="COLOR: #000000">229</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">52</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">92</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">228</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">55</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">89</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">235</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">38</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">106</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">190</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">217</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">112</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">144</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">171</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">230</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">49</span><span style="COLOR: #000000">, <br>  </span><span style="COLOR: #000000">83</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">245</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">12</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">20</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">60</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">68</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">204</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">79</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">209</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">104</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">184</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">211</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">110</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">178</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">205</span><span style="COLOR: #000000">, <br>  </span><span style="COLOR: #000000">76</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">212</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">103</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">169</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">224</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">59</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">77</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">215</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">98</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">166</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">241</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">8</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">24</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">40</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">120</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">136</span><span style="COLOR: #000000">, <br>  </span><span style="COLOR: #000000">131</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">158</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">185</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">208</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">107</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">189</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">220</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">127</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">129</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">152</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">179</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">206</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">73</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">219</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">118</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">154</span><span style="COLOR: #000000">, <br>  </span><span style="COLOR: #000000">181</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">196</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">87</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">249</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">16</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">48</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">80</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">240</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">11</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">29</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">39</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">105</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">187</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">214</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">97</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">163</span><span style="COLOR: #000000">, <br>  </span><span style="COLOR: #000000">254</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">25</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">43</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">125</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">135</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">146</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">173</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">236</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">47</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">113</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">147</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">174</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">233</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">32</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">96</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">160</span><span style="COLOR: #000000">, <br>  </span><span style="COLOR: #000000">251</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">22</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">58</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">78</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">210</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">109</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">183</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">194</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">93</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">231</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">50</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">86</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">250</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">21</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">63</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">65</span><span style="COLOR: #000000">, <br>  </span><span style="COLOR: #000000">195</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">94</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">226</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">61</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">71</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">201</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">64</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">192</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">91</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">237</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">44</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">116</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">156</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">191</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">218</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">117</span><span style="COLOR: #000000">, <br>  </span><span style="COLOR: #000000">159</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">186</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">213</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">100</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">172</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">239</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">42</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">126</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">130</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">157</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">188</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">223</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">122</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">142</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">137</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">128</span><span style="COLOR: #000000">, <br>  </span><span style="COLOR: #000000">155</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">182</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">193</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">88</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">232</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">35</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">101</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">175</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">234</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">37</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">111</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">177</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">200</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">67</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">197</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">84</span><span style="COLOR: #000000">, <br>  </span><span style="COLOR: #000000">252</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">31</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">33</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">99</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">165</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">244</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">7</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">9</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">27</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">45</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">119</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">153</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">176</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">203</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">70</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">202</span><span style="COLOR: #000000">, <br>  </span><span style="COLOR: #000000">69</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">207</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">74</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">222</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">121</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">139</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">134</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">145</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">168</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">227</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">62</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">66</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">198</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">81</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">243</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">14</span><span style="COLOR: #000000">, <br>  </span><span style="COLOR: #000000">18</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">54</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">90</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">238</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">41</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">123</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">141</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">140</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">143</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">138</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">133</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">148</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">167</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">242</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">13</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">23</span><span style="COLOR: #000000">, <br>  </span><span style="COLOR: #000000">57</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">75</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">221</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">124</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">132</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">151</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">162</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">253</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">28</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">36</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">108</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">180</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">199</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">82</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">246</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">1</span><span style="COLOR: #000000"><br> };<br><br> memcpy(pMyCypher, cypherOrg, </span><span style="COLOR: #000000">256</span><span style="COLOR: #000000">);<br><br> </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">鏍規(guī)嵁瀵嗙爜璋冩暣鍔犲瘑绱㈠紩</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> i, j;<br> </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">; i</span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">iKeyLen; i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br> {<br>  </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(j</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">; j</span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">256</span><span style="COLOR: #000000">; j</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br>  {<br>   </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> iSwitchIndex </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> (pMyCypher[j] </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> pKey[i])</span><span style="COLOR: #000000">%</span><span style="COLOR: #000000">255</span><span style="COLOR: #000000">;<br>   </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(iSwitchIndex</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">j)<br>    Swap2Byte(</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">(pMyCypher[j]), </span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">(pMyCypher[iSwitchIndex]));<br>  }<br> }<br>}<br><br></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> JiangCode(unsigned </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> pBuff, </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> iBuffLen, </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> pKey, </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> iKeyLen)<br>{<br> unsigned </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000"> cypher[</span><span style="COLOR: #000000">256</span><span style="COLOR: #000000">];<br> GetMyCypher(pKey, iKeyLen, cypher);<br> </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> iIndex</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br> </span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000"> (iIndex</span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">iBuffLen)<br> {<br>  </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">鍏跺疄……涔熷氨涓涓紓鎴栨搷浣滐紝鎵浠ュ姞瀵嗗拰瑙e瘑鐨勮繃紼嬪畬鍏ㄤ竴鏍?/span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">  pBuff[iIndex] </span><span style="COLOR: #000000">^=</span><span style="COLOR: #000000"> cypher[iIndex</span><span style="COLOR: #000000">%</span><span style="COLOR: #000000">256</span><span style="COLOR: #000000">];<br>  </span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">iIndex;<br> }<br>}<br><br></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> JiangEncode(unsigned </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> pBuff, </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> iBuffLen, </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> pKey, </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> iKeyLen)<br>{<br> JiangCode(pBuff, iBuffLen, pKey, iKeyLen);<br>}<br><br></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> JiangDecode(unsigned </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> pBuff, </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> iBuffLen, </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> pKey, </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> iKeyLen)<br>{<br> JiangCode(pBuff, iBuffLen, pKey, iKeyLen);<br>}</span></div> <p>鍐欏畬浜?jiǎn)锛寴q愯緇撴灉鏄涓嬶細(xì)</p> <p>241 206 235 249 4 160 190 73 253 196<br>160 238 105 243 18 190 10 97 26 66<br>182 218 99 73 40 204 208 123 196 46<br>76 208 117 159 38 66 234 117 142 52<br>66 63 135 193 60 49 228 15 12 58<br>131 252 1 171 96 72 254 198 171 201<br>110 242 27 189 199 108 136 12 177 215<br>88 66 156 183 221 142 27 45 61 221<br>122 158 39 174 123 112 156 241 77 227<br>112 148 57 67 225 30 47 49 83 94</p> <p>48 49 50 51 52 53 54 55 56 57<br>48 49 50 51 52 53 54 55 56 57<br>48 49 50 51 52 53 54 55 56 57<br>48 49 50 51 52 53 54 55 56 57<br>48 49 50 51 52 53 54 55 56 57<br>48 49 50 51 52 53 54 55 56 57<br>48 49 50 51 52 53 54 55 56 57<br>48 49 50 51 52 53 54 55 56 57<br>48 49 50 51 52 53 54 55 56 57<br>48 49 50 51 52 53 54 55 56 57 Press any key to continue</p> <p>涓婇潰榪欐鏄瘑鏂囷紝鐪嬭搗鏉ユ槸涓嶆槸瀹屽叏娌℃湁鍘熸枃鐨勬牱瀛愪簡(jiǎn)錛熶綘璇曡瘯鐪嬫妸TEST_LEN鏀逛負(fù)1錛屽彧鍔犲瘑涓涓瓧鑺傜湅錛岃繖涔熸槸鍏佽鐨勶紝浠g爜綰疌錛岀Щ妞嶆у緢濂斤紝鎷垮幓鍒鐢ㄤ篃鏂逛究銆備絾瀵瑰畨鍏ㄦц姹傞珮鐨勫簲鐢ㄥ彲鑳戒笉鑳戒嬌鐢ㄨ繖縐嶆柟娉曚簡(jiǎn)錛岃嚦浜庢庝箞鏍鋒墠綆楀畨鍏紝鎴戜篃涓嶇煡閬擄紝瀵嗙爜瀛︽柟闈㈢殑涓滆タ鎴戞渶瀹蟲(chóng)曚簡(jiǎn)銆?br></p> <img src ="http://www.shnenglu.com/guogangj/aggbug/97523.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/guogangj/" target="_blank">Jiang Guogang</a> 2009-09-29 10:34 <a href="http://www.shnenglu.com/guogangj/archive/2009/09/29/97523.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>銆怌SDN銆慦insock鍘熺悊http://www.shnenglu.com/guogangj/archive/2009/09/28/97443.htmlJiang GuogangJiang GuogangMon, 28 Sep 2009 03:09:00 GMThttp://www.shnenglu.com/guogangj/archive/2009/09/28/97443.htmlhttp://www.shnenglu.com/guogangj/comments/97443.htmlhttp://www.shnenglu.com/guogangj/archive/2009/09/28/97443.html#Feedback0http://www.shnenglu.com/guogangj/comments/commentRss/97443.htmlhttp://www.shnenglu.com/guogangj/services/trackbacks/97443.html銆?0060407鍙戣〃浜巄log.csdn.net錛?0090928閲嶇紪杈戙?/span>

錛堝崥涓伙細(xì)姝や負(fù)杞澆鏂囩珷錛屽嚭澶勫凡緇忚涓嶆竻錛屽唴瀹規(guī)湁浜涙硾娉涜岃皥錛屼粎渚涘弬鑰冿級(jí)

涓銆佸鎴鋒満/鏈嶅姟鍣ㄦā寮?/span>

鍦═CP/IP緗戠粶涓袱涓繘紼嬮棿鐨勭浉浜掍綔鐢ㄧ殑涓繪満妯″紡鏄鎴鋒満/鏈嶅姟鍣ㄦā寮?Client/Server model)銆傝妯″紡鐨勫緩绔嬪熀浜庝互涓嬩袱鐐癸細(xì)
1銆侀潪瀵圭瓑浣滅敤錛?br>2銆侀氫俊瀹屽叏鏄紓姝ョ殑銆?br>瀹㈡埛鏈?鏈嶅姟鍣ㄦā寮忓湪鎿嶄綔榪囩▼涓噰鍙栫殑鏄富鍔ㄨ紺烘柟寮忋?/p>

鏈嶅姟鍣ㄦ柟瑕佸厛鍚姩錛屽茍鏍規(guī)嵁璇風(fēng)ず鎻愪緵鐩稿簲鏈嶅姟錛岃繃紼嬪涓嬶細(xì)
1銆佹墦寮涓閫氫俊閫氶亾騫跺憡鐭ユ湰鍦頒富鏈猴紝瀹冩効鎰忓湪鏌愪竴涓叕璁ゅ湴鍧涓婃帴鏀跺鎴瘋姹傘?br>2銆佺瓑寰呭鎴瘋姹傚埌杈捐绔彛銆?br>3銆佹帴鏀跺埌閲嶅鏈嶅姟璇鋒眰錛屽鐞嗚璇鋒眰騫跺彂閫佸簲絳斾俊鍙楓?br>4銆佽繑鍥炵浜屾錛岀瓑寰呭彟涓瀹㈡埛璇鋒眰
5銆佸叧闂湇鍔″櫒銆?/p>

鐒跺悗姝誨鎴鋒柟錛?br>1銆佹墦寮涓閫氫俊閫氶亾錛屽茍榪炴帴鍒版湇鍔″櫒鎵鍦ㄤ富鏈虹殑鐗瑰畾绔彛銆?br>2銆佸悜鏈嶅姟鍣ㄥ彂閫佹湇鍔¤姹傛姤鏂囷紝絳夊緟騫舵帴鏀跺簲絳旓紱緇х畫(huà)鎻愬嚭璇鋒眰……
3銆佽姹傜粨鏉熷悗鍏抽棴閫氫俊閫氶亾騫剁粓姝€?/p>

浜屻佸熀鏈鎺ュ瓧

涓轟簡(jiǎn)鏇村ソ璇存槑濂楁帴瀛楃紪紼嬪師鐞嗭紝緇欏嚭鍑犱釜鍩烘湰鐨勫鎺ュ瓧錛屽湪浠ュ悗鐨勭瘒騫呬腑浼?xì)缁欏嚭鏇磋缁嗙殑鋴社敤璇存槑銆?/p>

1銆佸垱寤哄鎺ュ瓧鈥斺攕ocket()
鍔熻兘錛氫嬌鐢ㄥ墠鍒涘緩涓涓柊鐨勫鎺ュ瓧
鏍煎紡錛歋OCKET PASCAL FAR socket(int af,int type,int procotol);
af: 閫氫俊鍙戠敓鐨勫尯鍩?br>type: 瑕佸緩绔嬬殑濂楁帴瀛楃被鍨?br>procotol: 浣跨敤鐨勭壒瀹氬崗璁?

2銆佹寚瀹氭湰鍦板湴鍧鈥斺攂ind()
鍔熻兘錛氬皢濂楁帴瀛楀湴鍧涓庢墍鍒涘緩鐨勫鎺ュ瓧鍙瘋仈緋昏搗鏉ャ?br>鏍煎紡錛歩nt PASCAL FAR bind(SOCKET s,const struct sockaddr FAR * name,int namelen);
s: 鏄敱socket()璋冪敤榪斿洖鐨勫茍涓旀湭浣滆繛鎺ョ殑濂楁帴瀛楁弿榪扮錛堝鎺ュ瓧鍙鳳級(jí)銆?br>鍏跺畠錛氭病鏈夐敊璇紝bind()榪斿洖0錛屽惁鍒橲OCKET_ERROR

鍦板潃緇撴瀯璇存槑錛?/p>

struct sockaddr_in
{
 
short sin_family; 銆銆銆銆//AF_INET
 u_short sin_port; 銆銆銆銆//16浣嶇鍙e彿錛岀綉緇滃瓧鑺傞『搴?/span>
 struct in_addr sin_addr; //32浣岻P鍦板潃錛岀綉緇滃瓧鑺傞『搴?/span>
 char sin_zero[8]; 銆銆銆銆//淇濈暀
}

3銆佸緩绔嬪鎺ュ瓧榪炴帴鈥斺攃onnect()鍜宎ccept()
鍔熻兘錛氬叡鍚屽畬鎴愯繛鎺ュ伐浣?br>鏍煎紡錛歩nt PASCAL FAR connect(SOCKET s,const struct sockaddr FAR * name,int namelen);
鏍煎紡錛歋OCKET PASCAL FAR accept(SOCKET s,struct sockaddr FAR * name,int FAR * addrlen);
(鍙傛暟鍚屼笂)

4銆佺洃鍚繛鎺モ斺攍isten()
鍔熻兘錛氱敤浜庨潰鍚戣繛鎺ユ湇鍔″櫒錛岃〃鏄庡畠鎰挎剰鎺ユ敹榪炴帴銆?br>鏍煎紡錛歩nt PASCAL FAR listen(SOCKET s, int backlog);

5銆佹暟鎹紶杈撯斺攕end()涓巖ecv()
鍔熻兘錛氭暟鎹殑鍙戦佷笌鎺ユ敹
鏍煎紡錛歩nt PASCAL FAR send(SOCKET s,const char FAR * buf,int len,int flags);
鏍煎紡錛歩nt PASCAL FAR recv(SOCKET s,const char FAR * buf,int len,int flags);
buf:鎸囧悜瀛樻湁浼犺緭鏁版嵁鐨勭紦鍐插尯鐨勬寚閽堛?

6銆佸璺鐢ㄢ斺攕elect()
鍔熻兘錛氱敤鏉ユ嫻嬩竴涓垨澶氫釜濂楁帴瀛楃姸鎬併?br>鏍煎紡錛歩nt PASCAL FAR select(int nfds,fd_set FAR * readfds,fd_set FAR * writefds,
 fd_set FAR * exceptfds,const struct timeval FAR * timeout);
readfds:鎸囧悜瑕佸仛璇繪嫻嬬殑鎸囬拡
writefds:鎸囧悜瑕佸仛鍐欐嫻嬬殑鎸囬拡
exceptfds:鎸囧悜瑕佹嫻嬫槸鍚﹀嚭閿欑殑鎸囬拡
timeout:鏈澶х瓑寰呮椂闂?/p>

7銆佸叧闂鎺ュ瓧鈥斺攃losesocket()
鍔熻兘錛氬叧闂鎺ュ瓧s
鏍煎紡錛欱OOL PASCAL FAR closesocket(SOCKET s);

涓夈佸吀鍨嬭繃紼嬪浘

2.1 闈㈠悜榪炴帴鐨勫鎺ュ瓧鐨勭郴緇熻皟鐢ㄦ椂搴忓浘

2.2 鏃犺繛鎺ュ崗璁殑濂楁帴瀛楄皟鐢ㄦ椂搴忓浘

2.3 闈㈠悜榪炴帴鐨勫簲鐢ㄧ▼搴忔祦紼嬪浘

鍥涖乄inSock綆浠?/strong>

Windows Sockets 鏄粠 Berkeley Sockets 鎵╁睍鑰屾潵鐨勶紝鍏跺湪緇ф壙 Berkeley Sockets 鐨勫熀紜涓婏紝鍙堣繘琛屼簡(jiǎn)鏂扮殑鎵╁厖銆傝繖浜涙墿鍏呬富瑕佹槸鎻愪緵浜?jiǎn)涓浜涘紓姝ュ嚱鏁幫紝騫跺鍔犱簡(jiǎn)絎﹀悎WINDOWS娑堟伅椹卞姩鐗規(guī)х殑緗戠粶浜嬩歡寮傛閫夋嫨鏈哄埗銆?/p>

Windows Sockets鐢變袱閮ㄥ垎緇勬垚錛氬紑鍙戠粍浠跺拰榪愯緇勪歡銆?br>寮鍙戠粍浠訛細(xì)Windows Sockets 瀹炵幇鏂囨。銆佸簲鐢ㄧ▼搴忔帴鍙?API)寮曞叆搴撳拰涓浜涘ご鏂囦歡銆?br>榪愯緇勪歡錛歐indows Sockets 搴旂敤紼嬪簭鎺ュ彛鐨勫姩鎬侀摼鎺ュ簱(WINSOCK.DLL)銆?

浜斻乄inSock涓昏鎵╁厖璇存槑

1銆佸紓姝ラ夋嫨鏈哄埗
Windows Sockets 鐨勫紓姝ラ夋嫨鍑芥暟鎻愪緵浜?jiǎn)娑堟伅鏈哄埗鐨劸|戠粶浜嬩歡閫夋嫨錛屽綋浣跨敤瀹冪櫥璁扮綉緇滀簨浠跺彂鐢熸椂錛屽簲鐢ㄧ▼搴忕浉搴旂獥鍙e嚱鏁板皢鏀跺埌涓涓秷鎭紝娑堟伅涓寚紺轟簡(jiǎn)鍙戠敓鐨勭綉緇滀簨浠訛紝浠ュ強(qiáng)涓庝簨浠剁浉鍏崇殑涓浜涗俊鎭俉indows Sockets 鎻愪緵浜?jiǎn)涓涓紓姝ラ夋嫨鍑芥暟 WSAAsyncSelect()錛岀敤瀹冩潵娉ㄥ唽搴旂敤紼嬪簭鎰熷叴瓚g殑緗戠粶浜嬩歡錛屽綋榪欎簺浜嬩歡鍙戠敓鏃訛紝搴旂敤紼嬪簭鐩稿簲鐨勭獥鍙e嚱鏁板皢鏀跺埌涓涓秷鎭?/p>

鍑芥暟緇撴瀯濡備笅錛?br>int PASCAL FAR WSAAsyncSelect(SOCKET s,HWND hWnd,unsigned int wMsg,long lEvent);
hWnd錛氱獥鍙e彞鏌?br>wMsg錛氶渶瑕佸彂閫佺殑娑堟伅
lEvent錛氫簨浠訛紙浠ヤ笅涓轟簨浠剁殑鍐呭錛?/p>

浜嬩歡鍊煎惈涔夛細(xì)
FD_READ 鏈熸湜鍦ㄥ鎺ュ瓧涓婃敹鍒版暟鎹紙鍗寵鍑嗗濂斤級(jí)鏃舵帴鍒伴氱煡
FD_WRITE 鏈熸湜鍦ㄥ鎺ュ瓧涓婂彲鍙戦佹暟鎹紙鍗沖啓鍑嗗濂斤級(jí)鏃舵帴鍒伴氱煡
FD_OOB 鏈熸湜鍦ㄥ鎺ュ瓧涓婃湁甯﹀鏁版嵁鍒拌揪鏃舵帴鍒伴氱煡
FD_ACCEPT 鏈熸湜鍦ㄥ鎺ュ瓧涓婃湁澶栨潵榪炴帴鏃舵帴鍒伴氱煡
FD_CONNECT 鏈熸湜鍦ㄥ鎺ュ瓧榪炴帴寤虹珛瀹屾垚鏃舵帴鍒伴氱煡
FD_CLOSE 鏈熸湜鍦ㄥ鎺ュ瓧鍏抽棴鏃舵帴鍒伴氱煡

渚嬪錛氭垜浠鍦ㄥ鎺ュ瓧璇誨噯澶囧ソ鎴栧啓鍑嗗濂芥椂鎺ュ埌閫氱煡錛岃鍙ュ涓嬶細(xì)
rc=WSAAsyncSelect(s,hWnd,wMsg,FD_READ|FD_WRITE);
濡傛灉鎴戜滑闇瑕佹敞閿瀵瑰鎺ュ瓧緗戠粶浜嬩歡鐨勬秷鎭彂閫侊紝鍙灝?lEvent 璁劇疆涓?

2銆佸紓姝ヨ姹傚嚱鏁?/strong>
鍦?Berkeley Sockets 涓姹傛湇鍔℃槸闃誨鐨勶紝W(xué)INDOWS SICKETS 闄や簡(jiǎn)鏀寔榪欎竴綾誨嚱鏁板錛岃繕澧炲姞浜?jiǎn)鐩稿簲鐨勫紓姝ヨh眰鍑芥暟鈥斺擶SAAsyncGetXByY銆?

3銆侀樆濉炲鐞嗘柟娉?/strong>
Windows Sockets 涓轟簡(jiǎn)瀹炵幇褰撲竴涓簲鐢ㄧ▼搴忕殑濂楁帴瀛楄皟鐢ㄥ浜庨樆濉炴椂錛岃兘澶熸斁寮僀PU璁╁叾瀹冨簲鐢ㄧ▼搴忚繍琛岋紝瀹冨湪璋冪敤澶勪簬闃誨鏃朵究榪涘叆涓涓彨“HOOK”鐨勪緥紼嬶紝姝や緥紼嬭礋璐f帴鏀跺拰鍒嗛厤WINDOWS娑堟伅錛屼嬌寰楀叾瀹冨簲鐢ㄧ▼搴忎粛鐒惰兘澶熸帴鏀跺埌鑷繁鐨勬秷鎭茍鍙栧緱鎺у埗鏉冦?/p>

WINDOWS 鏄潪鎶㈠厛鐨勫浠誨姟鐜錛屽嵆鑻ヤ竴涓▼搴忎笉涓誨姩鏀懼純鍏舵帶鍒舵潈錛屽埆鐨勭▼搴忓氨涓嶈兘鎵ц銆傚洜姝ゅ湪璁捐Windows Sockets 紼嬪簭鏃訛紝灝界緋葷粺鏀寔闃誨鎿嶄綔錛屼絾榪樻槸鍙嶅紼嬪簭鍛樹(shù)嬌鐢ㄨ鎿嶄綔銆備絾鐢變簬 SUN 鍏徃涓嬬殑 Berkeley Sockets 鐨勫鎺ュ瓧榛樿鎿嶄綔鏄樆濉炵殑錛學(xué)INDOWS 浣滀負(fù)縐繪鐨?SOCKETS 涔熶笉鍙伩鍏嶅榪欎釜鎿嶄綔鏀寔銆?/p>

鍦╓indows Sockets 瀹炵幇涓紝瀵逛簬涓嶈兘绔嬪嵆瀹屾垚鐨勯樆濉炴搷浣滃仛濡備笅澶勭悊錛欴LL鍒濆鍖?#8594;寰幆鎿嶄綔銆傚湪寰幆涓紝瀹冨彂閫佷換浣?WINDOWS 娑堟伅錛屽茍媯(gè)鏌ヨ繖涓?Windows Sockets 璋冪敤鏄惁瀹屾垚錛屽湪蹇呰鏃訛紝瀹冨彲浠ユ斁寮僀PU璁╁叾瀹冨簲鐢ㄧ▼搴忔墽琛岋紙褰撶劧浣跨敤瓚呯嚎紼嬬殑CPU灝變笉浼?xì)鏈墭q欎釜楹葷儲(chǔ)浜?jiǎn)^_^錛夈傛垜浠彲浠ヨ皟鐢?WSACancelBlockingCall() 鍑芥暟鍙栨秷姝ら樆濉炴搷浣溿?/p>

鍦?Windows Sockets 涓紝鏈変竴涓粯璁ょ殑闃誨澶勭悊渚嬬▼ BlockingHook() 綆鍗曞湴鑾峰彇騫跺彂閫?WINDOWS 娑堟伅銆傚鏋滆瀵瑰鏉傜▼搴忚繘琛屽鐞嗭紝W(xué)indows Sockets 涓繕鏈?WSASetBlockingHook() 鎻愪緵鐢ㄦ埛瀹夎鑷繁鐨勯樆濉炲鐞嗕緥紼嬭兘鍔涳紱涓庤鍑芥暟鐩稿搴旂殑鍒欐槸 WSAUnhookBlockingHook()錛屽畠鐢ㄤ簬鍒犻櫎鍏堝墠瀹夎鐨勪換浣曢樆濉炲鐞嗕緥紼嬶紝騫墮噸鏂板畨瑁呴粯璁ょ殑澶勭悊渚嬬▼銆傝娉ㄦ剰錛岃璁¤嚜宸辯殑闃誨澶勭悊渚嬬▼鏃訛紝闄や簡(jiǎn)鍑芥暟 WSACancelBlockingHook() 涔嬪錛屽畠涓嶈兘浣跨敤鍏跺畠鐨?Windows Sockets API 鍑芥暟銆傚湪澶勭悊渚嬬▼涓皟鐢?WSACancelBlockingHook()鍑芥暟灝嗗彇娑堝浜庨樆濉炵殑鎿嶄綔錛屽畠?yōu)畣缁撴潫闃诲弩@鐜?/p>

4銆佸嚭閿欏鐞?/strong>

Windows Sockets 涓轟簡(jiǎn)鍜屼互鍚庡綰跨▼鐜錛圵INDOWS/UNIX錛夊吋瀹癸紝瀹冩彁渚涗簡(jiǎn)涓や釜鍑洪敊澶勭悊鍑芥暟鏉ヨ幏鍙栧拰璁劇疆褰撳墠綰跨▼鐨勬渶榪戦敊璇彿銆傦紙WSAGetLastEror()鍜學(xué)SASetLastError()錛?/p>

5銆佸惎鍔ㄤ笌緇堟

浣跨敤鍑芥暟 WSAStartup() 鍜?WSACleanup() 鍚姩鍜岀粓姝㈠鎺ュ瓧銆?/p>

鍏乄indows Sockets緗戠粶紼嬪簭璁捐鏍稿績(jī)

鎴戜滑緇堜簬鍙互寮濮嬬湡姝g殑 Windows Sockets 緗戠粶紼嬪簭璁捐浜?jiǎn)銆備笉榪囨垜浠繕鏄厛鐪嬩竴鐪嬫瘡涓?Windows Sockets 緗戠粶紼嬪簭閮借娑夊強(qiáng)鐨勫唴瀹廣傝鎴戜滑涓姝ユ鎱㈡參璧般?/p>

1銆佸惎鍔ㄤ笌緇堟

鍦ㄦ墍鏈塛indows Sockets鍑芥暟涓紝鍙湁鍚姩鍑芥暟WSAStartup()鍜岀粓姝㈠嚱鏁癢SACleanup()鏄繀欏諱嬌鐢ㄧ殑銆傚惎鍔ㄥ嚱鏁板繀欏繪槸絎竴涓嬌鐢ㄧ殑鍑芥暟錛岃屼笖瀹冨厑璁告寚瀹?Windows Sockets API 鐨勭増鏈紝騫惰幏寰?SOCKETS鐨勭壒瀹氱殑涓浜涙妧鏈粏鑺傘傛湰緇撴瀯濡備笅錛?/p>

int PASCAL FAR WSAStartup(WORD wVersionRequested, LPWSADATA lpWSAData);

鍏朵腑 wVersionRequested 淇濊瘉 SOCKETS 鍙甯歌繍琛岀殑 DLL 鐗堟湰錛屽鏋滀笉鏀寔錛屽垯榪斿洖閿欒淇℃伅銆傛垜浠湅涓涓嬩笅闈㈣繖孌典唬鐮侊紝鐪嬩竴涓嬪浣曡繘琛?WSAStartup() 鐨勮皟鐢細(xì)

WORD wVersionRequested; // 瀹氫箟鐗堟湰淇℃伅鍙橀噺
WSADATA wsaData; //瀹氫箟鏁版嵁淇℃伅鍙橀噺
int err; //瀹氫箟閿欒鍙峰彉閲?/span>
wVersionRequested = MAKEWORD(1,1);//緇欑増鏈俊鎭祴鍊?/span>
err = WSAStartup(wVersionRequested, &wsaData);//緇欓敊璇俊鎭祴鍊?/span>
if(err!=0)
{
銆銆
return;//鍛婅瘔鐢ㄦ埛鎵句笉鍒板悎閫傜殑鐗堟湰
}
//紜 Windows Sockets DLL 鏀寔 1.1 鐗堟湰
//DLL 鐗堟湰鍙互楂樹(shù)簬 1.1
//緋葷粺榪斿洖鐨勭増鏈彿濮嬬粓鏄渶浣庤姹傜殑 1.1錛屽嵆搴旂敤紼嬪簭涓嶥LL 涓彲鏀寔鐨勬渶浣庣増鏈彿
if(LOBYTE(wsaData.wVersion)!= 1|| HIBYTE(wsaData.wVersion)!=1)
{
銆銆WSACleanup();
//鍛婅瘔鐢ㄦ埛鎵句笉鍒板悎閫傜殑鐗堟湰
銆銆return;
}
//Windows Sockets DLL 琚繘紼嬫帴鍙楋紝鍙互榪涘叆涓嬩竴姝ユ搷浣?/span>

鍏抽棴鍑芥暟浣跨敤鏃訛紝浠諱綍鎵撳紑騫跺凡榪炴帴鐨?SOCK_STREAM 濂楁帴瀛楄澶嶄綅錛屼絾閭d簺宸茬敱 closesocket() 鍑芥暟鍏抽棴鐨勪絾浠嶆湁鏈彂閫佹暟鎹殑濂楁帴瀛椾笉鍙楀獎(jiǎng)鍝嶏紝鏈彂閫佺殑鏁版嵁浠嶅皢琚彂閫併傜▼搴忚繍琛屾椂鍙兘浼?xì)澶殝啤璋冪?WSAStartuo() 鍑芥暟錛屼絾蹇呴』淇濊瘉姣忔璋冪敤鏃剁殑 wVersionRequested 鐨勫兼槸鐩稿悓鐨勩?/p>

2銆佸紓姝ヨ姹傛湇鍔?/strong>

Windows Sockets 闄ゆ敮鎸?Berkeley Sockets 涓悓姝ヨ姹傦紝榪樺鍔犱簡(jiǎn)浜?jiǎn)涓綾誨紓姝ヨ姹傛湇鍔″嚱鏁?WSAAsyncGerXByY()銆傝鍑芥暟鏄樆濉炶姹傚嚱鏁扮殑寮傛鐗堟湰銆傚簲鐢ㄧ▼搴忚皟鐢ㄥ畠鏃訛紝鐢?Windows Sockets DLL 鍒濆鍖栬繖涓鎿嶄綔騫惰繑鍥炶皟鐢ㄨ咃紝姝ゅ嚱鏁拌繑鍥炰竴涓紓姝ュ彞鏌勶紝鐢ㄦ潵鏍囪瘑榪欎釜鎿嶄綔銆傚綋緇撴灉瀛樺偍鍦ㄨ皟鐢ㄨ呮彁渚涚殑緙撳啿鍖猴紝騫朵笖鍙戦佷竴涓秷鎭埌搴旂敤紼嬪簭鐩稿簲紿楀彛銆傚父鐢ㄧ粨鏋勫涓嬶細(xì)

HANDLE taskHnd;
char hostname="rs6000";
taskHnd 
= WSAAsyncBetHostByName(hWnd,wMsg,hostname,buf,buflen);  

闇瑕佹敞鎰忕殑鏄紝鐢變簬 Windows 鐨勫唴瀛樺鍍忓彲浠ヨ緗負(fù)鍙Щ鍔ㄥ拰鍙涪寮冿紝鍥犳鍦ㄦ搷浣滃唴瀛樺璞℃槸錛屽繀欏諱繚璇?WIindows Sockets DLL 瀵硅薄鏄彲鐢ㄧ殑銆?

3銆佸紓姝ユ暟鎹紶杈?/strong>

浣跨敤 send() 鎴?sendto() 鍑芥暟鏉ュ彂閫佹暟鎹紝浣跨敤 recv() 鎴杛ecvfrom() 鏉ユ帴鏀舵暟鎹俉indows Sockets 涓嶉紦鍔辯敤鎴蜂嬌鐢ㄩ樆濉炴柟寮忎紶杈撴暟鎹紝鍥犱負(fù)閭f牱鍙兘浼?xì)闃诲鏁翠?Windows 鐜銆備笅闈㈡垜浠湅涓涓紓姝ユ暟鎹紶杈撳疄渚嬨?/p>

鍋囪濂楁帴瀛?s 鍦ㄨ繛鎺ュ緩绔嬪悗錛屽凡緇忎嬌鐢ㄤ簡(jiǎn)鍑芥暟 WSAAsyncSelect() 鍦ㄥ叾涓婃敞鍐屼簡(jiǎn)緗戠粶浜嬩歡 FD_READ 鍜?FD_WRITE錛屽茍涓?wMsg 鍊間負(fù) UM_SOCK錛岄偅涔堟垜浠彲浠ュ湪 Windows 娑堟伅寰幆涓鍔犲涓嬬殑鍒嗘敮璇彞錛?/p>

case UM_SOCK:
銆銆
switch(lParam)
銆銆{
銆銆
case FD_READ:
銆銆銆銆len 
= recv(wParam,lpBuffer,length,0);
銆銆銆銆
break;
銆銆
case FD_WRITE:
銆銆銆銆
while(send(wParam,lpBuffer,len,0)!=SOCKET_ERROR)
銆銆銆銆
break;
銆銆}
break

4銆佸嚭閿欏鐞?/strong>

Windows 鎻愪緵浜?jiǎn)涓涓嚱鏁版潵鑾峰彇鏈榪戠殑閿欒鐮?WSAGetLastError()錛屾帹鑽愮殑緙栧啓鏂瑰紡濡備笅錛?

len = send (s,lpBuffer,len,0);
if((len==SOCKET_ERROR)&&(WSAGetLastError()==WSAWOULDBLOCK)){}

 



]]>
DLL蹇熷叆闂?/title><link>http://www.shnenglu.com/guogangj/archive/2009/09/24/97136.html</link><dc:creator>Jiang Guogang</dc:creator><author>Jiang Guogang</author><pubDate>Thu, 24 Sep 2009 08:35:00 GMT</pubDate><guid>http://www.shnenglu.com/guogangj/archive/2009/09/24/97136.html</guid><wfw:comment>http://www.shnenglu.com/guogangj/comments/97136.html</wfw:comment><comments>http://www.shnenglu.com/guogangj/archive/2009/09/24/97136.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/guogangj/comments/commentRss/97136.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/guogangj/services/trackbacks/97136.html</trackback:ping><description><![CDATA[<p>涓夊勾澶氬墠鎴戝湪blog.csdn.net涓婂崐杞澆榪囦竴綃囨枃绔狅紝鍏充簬DLL鍏ラ棬鐨勶紝涓嶈繃鍐呭鏈変簺鍑屼貢錛屽姞涓婇潪鍘熷垱錛屾垜鎵撶畻閲嶆柊鍐欎竴涓嬶紝鏇寸獊鍑?#8220;蹇?#8221;錛屽唴瀹瑰槢錛屽氨姣旇緝綺劇畝浜?jiǎn)锛岃櫧鐒毒_劇畝錛岀湅瀹屽悗鍐欏啓DLL鑲畾鏄病闂鐨勶紝鐩鎬俊鎴戙?/p> <p><strong>涓錛屽揩閫熺敓鎴愪竴涓狣LL</strong></p> <p>鍝︼紝瀵逛簡(jiǎn)錛岃瑙h繕鏄敤VC++ 6.0錛堢畝縐癡C6錛夋潵璁茶В銆傚湪VC6涓媙ew涓涓?#8220;Win32 Dynamic-Link Library”鐨凱roject錛屽氨鍙?#8220;dllTest”鍚э紝娉ㄦ剰涓嶈閫夋嫨“MFC AppWizard(dll)”錛屽洜涓?#8230;…榪欎笉灞炰簬鏈枃鐨勫唴瀹癸紝鍏跺疄鏈閲嶈鐨勬槸錛氭垜涓嶅お鎳傦紙^_^錛夛紝鐒跺悗鍛紝閫夋嫨“An empty DLL project”鍗沖彲銆?/p> <p>鎺ヤ笅鏉ュ氨鏄垱寤轟互榪欎袱涓枃浠訛紝騫舵坊鍔犲埌Project涓幓錛?/p> <p>lib.h</p> <div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000">#ifndef LIB_H<br></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000"> LIB_H</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">extern</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">C</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">  </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> __declspec(dllexport) add(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> x,</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> y);<br></span><span style="COLOR: #0000ff">#endif</span></div> <p>lib.cpp</p> <div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000">#include </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">lib.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> add(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> x,</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> y)<br>{<br>    </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> x </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> y;<br>}</span></div> <p>Build錛侊紙榪欎箞綆鍗曠殑紼嬪簭涓嶄細(xì)閫氫笉榪囧惂錛燂級(jí)浣犲氨鑳界湅鍒頒綘鐨勭敓鎴愮洰褰曚笅鏈変釜鏂囦歡錛屽彨“dllTest.dll”錛岃繖灝辨槸鎴戜滑絎竴涓猟ll錛屾病鍑犺浠g爜錛岀畝鍗曞惂錛屼絾楹婚泙铏藉皬浜旇剰淇卞叏錛屾垜浠嬌鐢╒isual Studio鎻愪緵鐨勫伐鍏?#8220;Depends”鎵撳紑榪欎釜鏂囦歡鐪嬬湅錛屽鍥炬墍紺猴紝浣犺兘鐪嬪埌鎴戜滑瀵煎嚭鐨勮繖涓嚱鏁幫紝add銆?/p> <p>榪欎釜瓚呭井鍨嬬殑dll鍜屾櫘閫氱▼搴忕殑涓嶅悓鍦ㄤ簬add鍑芥暟鐨勫0鏄庯紝澶氫簡(jiǎn)涓涓猒_declspec(dllexport)錛岃繖涓槸鍏抽敭錛岃繖涓慨楗扮鍛婅瘔VC6錛岃繖涓嚱鏁伴渶瑕佸鍑猴紝鑰屽墠闈㈢殑extern "C"鐨勬剰鎬濇槸榪欎釜鍑芥暟鏄互C璇█鐨勬爣鍑嗘潵璋冪敤鐨勶紝濡傛灉涓嶅姞extern "C"鐨勮瘽錛屼細(xì)鎬庝箞鏍峰憿錛熻嚜宸辮瘯璇曠湅鍚э紝Build鍚庡啀鐢―epends鐪嬬湅鐢熸垚鐨刣ll銆?br><img border=0 alt="" src="http://www.shnenglu.com/images/cppblog_com/guogangj/fast_dll_1.png" width=500 height=386><br></p> <p><strong>浜屻佷嬌鐢ㄨ繖涓狣LL</strong></p> <p>鐢╒C6鐨勫悜瀵煎垱寤轟竴涓?#8220;Win32 Console Application”鐨凱roject錛屽彨“CallDllTest”錛岀劧鍚庨夋嫨“"A Hello, Word!"Application”錛屼負(fù)浠涔堢敤Console錛熺畝鍗曞憲銆?/p> <p>鎶奀allDllTest.cpp鐨勫唴瀹規(guī)崲鎴愪互涓嬶細(xì)<br>CallDllTest.cpp</p> <div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000">#include </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">stdafx.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br>#include </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">windows.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br><br>typedef </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> ( </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> lpAddFun)(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">,</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">);<br><br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> main(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> argc, </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> argv[])<br>{<br>    HINSTANCE hDll;   </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">DLL handle </span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">    lpAddFun addFun;  </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">Function pointer</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">    hDll </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> LoadLibrary(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">dllTest.dll</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br>    </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (hDll </span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000"> NULL)<br>    {<br>  addFun </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> (lpAddFun)GetProcAddress(hDll,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">add</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);   <br>  </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(addFun</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">NULL)<br>  {<br>   </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> result </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">  addFun(</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">);    <br>   printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,result);<br>  }<br>  FreeLibrary(hDll);<br>    }   <br>    </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>}</span></div> <p>Build錛岀劧鍚?lt;Ctrl>+<F5>榪愯錛屽氨鑳界湅鍒扮粨鏋滀簡(jiǎn)錛屾墦鍗頒簡(jiǎn)涓涓?#8220;5”鍑烘潵錛岃鏄庢甯鎬簡(jiǎn)錛屾湁鐐歸渶瑕佽鏄庣殑鏄綘寰楁妸鍓嶉潰鐢熶駭鐨勯偅涓狣LL鍜岃繖嬈$敓鎴愮殑EXE鏀懼湪鍚屼竴鐩綍涓嬫柟鍙備唬鐮佸緢綆鍗曪紝鎬濊礬灝辨槸瀹氫箟鍑芥暟鎸囬拡綾誨瀷錛屽姞杞紻LL錛岃幏鍙栬璋冪敤鐨勫嚱鏁扮殑鎸囬拡錛岀劧鍚庤皟鐢紝榪欎箞涓涓繃紼嬨?/p> <p><strong>涓夈侀潤(rùn)鎬侀摼鎺?/strong></p> <p>鍒氭墠浣跨敤LoadLibrary榪欎釜API鍔犺澆DLL鐨勬柟寮忓彨鍔ㄦ侀摼鎺ワ紝鐜板湪鏉ヤ粙緇嶉潤(rùn)鎬侀摼鎺ワ紝鍏跺疄闈?rùn)鎬侀摼鎺ョ敤寰楄繕鏇村錛屽彧涓嶈繃浣犱笉涓瀹氭敞鎰忓埌鑰屽凡錛屼笉淇$殑璇濈幇鍦ㄦ煡鐪嬩竴涓嬩綘鍒氬垱寤虹殑CallDllTest榪欎釜Project鐨凱roject Settings錛屽鍥撅細(xì)<br></p> <p><img border=0 alt="" src="http://www.shnenglu.com/images/cppblog_com/guogangj/fast_dll_2.PNG" width=567 height=385><br>娉ㄦ剰鎴戠敾綰㈢嚎鐨勮繖涓湴鏂癸紝Kernel32.lib錛寀ser32.lib鍜実di32.lib絳夛紝榪欎簺lib鍙仛“瀵煎叆搴?#8221;錛屽茍涓嶅寘鍚湡姝f湁鏁堢殑浠g爜錛岀湡姝f湁鏁堢殑浠g爜鏄瓨鏀懼湪DLL涓殑錛屽垰鎵嶆垜浠墍浣跨敤鐨凩oadLibrary榪欎釜API錛屽叾瀹炲氨鏄氳繃Kernel32.lib閾炬帴鍒癒ernel32.dll涓幓鐨勶紝涔熷氨鏄LoadLibrary鐨勫疄鐜板瓨鍦ㄤ簬Kernel32.dll涓紝鑰屾垜浠槸閫氳繃Kernel32.lib鏉ユ壘鍒板畠鐨勶紝濡傛灉榪樻湁鍏磋叮鐨勮瘽錛屽彲浠ョ敤Depends鐪嬬湅Kernel32.dll錛岀湅鐪嬮噷闈㈡槸鍚︽湁LoadLibrary錛岄噷闈㈠嚱鏁板緢澶氾紝鍒湅鑺辯溂浜?jiǎn)鍝﹀Q岃繖鍙槸Windows鐨勬牳蹇?jī)搴撲箣涓錛屼絾鍙兘浣犲茍娌℃湁鎵懼埌LoadLibrary錛岃屾槸鎵懼埌浜?jiǎn)锛孡oadLibraryA鍜孡oadLibraryW錛岃繖寰堟甯革紝鍥犱負(fù)寰堝闇瑕佷嬌鐢ㄥ埌瀛楃涓茬殑API錛岄兘鏈変袱涓増鏈紝涓涓槸紿勫瓧絎︾増錛屼竴涓槸瀹藉瓧絎︾増錛屽湪紼嬪簭緙栬瘧閾炬帴鐨勬椂鍊欙紝緙栬瘧鍣ㄤ細(xì)鏍規(guī)嵁浣犵殑閫夐」鏉ヨ窡浣犻夋嫨鍏朵腑涓涓紝榪欓噷鏆傛椂涓嶅睍寮浜?jiǎn)銆?/p> <p>閭e浣曢潤(rùn)鎬佷嬌鐢ㄥ墠闈㈢敓鎴愮殑閭d釜dllTest.dll鍛紵鍥炲埌鍒氭墠dllTest.dll鐨勯偅涓敓鎴愮洰褰曪紝浣犱細(xì)鍙戠幇涓涓彨dllTest.lib鐨勬枃浠訛紝榪欏氨鏄垜鍓嶉潰鎻愬埌“瀵煎叆搴?#8221;錛岀幇鍦ㄦ敼涓涓婥allDllTest.cpp銆?br>CallDllTest.cpp</p> <div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000">#include </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">stdafx.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br><br>#pragma comment(lib, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">dllTest.lib</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)<br><br></span><span style="COLOR: #0000ff">extern</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">C</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">  </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> __declspec(dllimport) add(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> x,</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> y);<br><br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> main(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> argc, </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> argv[])<br>{<br> </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> result </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">  add(</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">);    <br> printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,result);<br>    </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>}</span></div> <p>dllTest.lib榪欎釜鏂囦歡寰楀鍒跺埌CallDllTest榪欎釜Project鐨勭洰褰曚笅錛屽惁鍒欎細(xì)鎶ユ壘涓嶅埌鏂囦歡錛屾墽琛岀粨鏋滃浣曪紵璺熷垰鎵嶆槸涓鏍風(fēng)殑錛岃繖縐嶆柟寮忓氨鍙潤(rùn)鎬侀摼鎺ワ紝鍖哄埆鏄粈涔堬紵涓嶉渶瑕佸湪榪愯鏃惰皟鐢↙oadLibrary浜?jiǎn)锛屾垜涓壶櫑夊緱闈?rùn)鎬侀摼鎺ョ敤寰楁洿澶氫竴浜涖?/p> <p>娉ㄦ剰鐪嬩唬鐮侊細(xì)</p> <div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #0000ff">extern</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">C</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">  </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> __declspec(dllimport) add(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> x,</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> y);</span></div> <p>榪欏彞璇濆緢鍏抽敭錛宊_declspec(dllimport)瀵瑰簲浜?jiǎn)DllTest涓殑__declspec(dllexport)錛岃〃紺鴻鍑芥暟灝嗕粠dll涓鍏ワ紝閭d綘涔熻瑕侀棶浜?jiǎn)锛?xì)“鎴戞庝箞鐭ラ亾榪欎釜dll涓湁榪欎釜鍑芥暟錛熷茍涓旇繕鐭ラ亾榪欎釜鍑芥暟鐨勫弬鏁扮被鍨嬪拰榪斿洖鍊肩被鍨嬶紵璇ヤ笉浼?xì)涔熸槸鐢―epends鍘葷湅鍚э紵”鍛?#8230;…榪欐庝箞璇村憿錛熷鏋滆繖涓猟ll鏄綘鍐欑殑錛屼綘褰撶劧鐭ラ亾鍟︼紝浣嗗鏋滆繖涓狣ll涓嶆槸浣犲啓鐨勮瘽錛屽畠鐨勪綔鑰呭線寰浼?xì)鎻愪緵涓涓ご鏂囦歡錛屽氨濂藉儚浣犺浣跨敤LoadLibrary錛屼綘寰楀寘鍚?#8220;windows.h”榪欎釜澶存枃浠朵竴鏍鳳紝鍚﹀垯灝卞嚭鐜扮鍙鋒湭瀹氫箟鐨勭紪璇戦敊璇紝閭d箞鎴戜滑鏀逛竴涓媗ib.h榪欎釜澶存枃浠躲?/p> <p>lib.h</p> <div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000">#ifndef LIB_H<br></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000"> LIB_H</span><span style="COLOR: #000000"><br>#ifdef DLLTEST_EXPORTS<br></span><span style="COLOR: #0000ff">extern</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">C</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> __declspec(dllexport) add(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> x,</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> y);<br></span><span style="COLOR: #0000ff">#else</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">extern</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">C</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> __declspec(dllimport) add(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> x,</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> y);<br></span><span style="COLOR: #0000ff">#endif</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">#endif</span></div> <p>鍦―llTest榪欎釜Project涓紝DLLTEST_EXPORTS鏄瀹氫箟浜?jiǎn)鐨勫Q屽鍥撅細(xì)<br><img border=0 alt="" src="http://www.shnenglu.com/images/cppblog_com/guogangj/fast_dll_3.png" width=652 height=300><br></p> <p>鎵浠ヤ嬌鐢╠llexport錛岃屽湪鍒殑Project涓紝鍒欎嬌鐢╠llimport銆傚湪CallDllTest涓璱nclude榪欎釜lib.h錛屽氨鍙互浜?jiǎn)锛屽綋鐒朵綘涔熷彲浠ュ啓寰楁洿濂藉Q屾垜榪欓噷浠呬粎鏄痙emo銆?/p> <p><strong>鍥涖丏LL涓殑main鍑芥暟</strong></p> <p>澶у閮界煡閬揅璇█鐨勭▼搴忔槸浠巑ain寮濮嬬殑錛屽埌浜?jiǎn)Windows鐜涓嬶紝鍒欐崲鎴愪簡(jiǎn)WinMain錛屼絾涔熷樊涓嶅錛岄偅DLL鏈夋病鏈夌被浼肩殑鍏ュ彛鍛紵絳旀鏄偗瀹氱殑錛屾垜浠潵鏀逛竴涓婦llTest鐨刲ib.cpp銆?/p> <p>lib.cpp</p> <div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000">#include </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">lib.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br>#include </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">windows.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br>#include </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">stdio.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br><br>BOOL APIENTRY DllMain( HANDLE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved)<br>{<br>    </span><span style="COLOR: #0000ff">switch</span><span style="COLOR: #000000"> (ul_reason_for_call)<br>    {<br>    </span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000"> DLL_PROCESS_ATTACH:<br>  printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">\nprocess attach of DLL</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br>  </span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br>    </span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000"> DLL_THREAD_ATTACH:<br>  printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">\nthread attach of DLL</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br>  </span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br>    </span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000"> DLL_THREAD_DETACH:<br>  printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">\nthread detach of DLL</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br>  </span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br>    </span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000"> DLL_PROCESS_DETACH:<br>  printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">\nprocess detach of DLL</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br>  </span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br>    }<br>    </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> TRUE;<br>}<br><br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> add(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> x,</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> y)<br>{<br>    </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> x </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> y;<br>}</span></div> <p>浣犺兘鐪嬪埌涓涓彨“DllMain”鐨勫嚱鏁幫紝瀹冨氨鏄痙ll鐨勫叆鍙o紝oh錛屽綋鐒朵簡(jiǎn)錛屾垜榪欑瘒鏂囩珷鎵璁茬殑閮芥槸閽堝Windows鎿嶄綔緋葷粺鐨勶紝Linux鐨勫彲涓嶄竴鏍峰摝錛岀敋鑷充竴鑸潵璇達(dá)紝Linux鐨凞LL閮戒笉鍙?#8220;DLL”銆?/p> <p>濂戒簡(jiǎn)錛屼綘鍐嶆寜鐓у墠闈㈢殑鏂規(guī)硶鍘昏皟鐢ㄤ笅榪欎釜DLL錛岋紙璁板緱鎷瘋礉榪欎釜dll鍒扮浉搴旂洰褰曞幓錛夎繖鏃跺欎綘灝辮兘鐪嬪埌鎵ц緇撴灉涓浜?#8220;process attach of DLL”鍜?#8220;process detach of DLL”錛岃繖鏄緢鏄捐屾槗瑙佺殑錛屼竴涓繘紼嬭繛鎺ュ拰鏂紑榪炴帴鍒拌繖涓猟ll鐨勬椂鍊欙紝DllMain灝變細(xì)琚皟鐢紝涓斾紶閫掔殑ul_reason_for_call鍙傛暟鍒嗗埆鏄疍LL_PROCESS_ATTACH鍜孌LL_PROCESS_DETACH錛岄偅浠涔堟椂鍊欎細(xì)鏈?#8220;DLL_THREAD_ATTACH”鍜?#8220;DLL_THREAD_DETACH”錛熷綋搴撳凡緇忓姞杞斤紝鍒涘緩鏂扮殑綰跨▼鍜岄攢姣佺嚎紼嬬殑鏃跺欙紝浼?xì)鍒嗗埆鋴社敤THREAD_ATTACH鍜孴HREAD_DETACH鍙傛暟鏉ヨ皟DllMain銆?/p> <p><strong>浜斻佽皟鐢ㄦ柟寮?/strong></p> <p>鍓嶉潰鎴戜滑瀵煎叆錛屽鍑哄嚱鏁扮殑鏃跺欓兘鍔犱簡(jiǎn)涓涓?#8220;extern "C"”錛岄偅涓嶅姞浼?xì)鎬庝箞鏍峰憿錛熷鏋滃啀娑夊強(qiáng)鍒拌繖鍑犱釜淇グ絎︼細(xì)__stdcall錛宊_cdecl鍜宊_fastcall錛岄偅鍙堜細(xì)鎬庢牱鍛紵鎴戠敾浜?jiǎn)涓や釜琛ㄥQ屽ぇ瀹跺彲浠ユ瘮杈冧笅錛屼綋浼?xì)涓嬨?/p> <p>榪欐槸涓夌涓嶅悓璋冪敤鏂瑰紡鐨勬瘮杈冿細(xì)<br><img border=0 alt="" src="http://www.shnenglu.com/images/cppblog_com/guogangj/fast_dll_4.png" width=483 height=119><br></p> <p>榪欐槸鍛藉悕淇グ鍦ㄤ笉鍚屾柟寮忎笅鐨勬瘮杈冿細(xì)<br><img border=0 alt="" src="http://www.shnenglu.com/images/cppblog_com/guogangj/fast_dll_5.png" width=574 height=165><br></p> <p>濡傛灉dll鍜宔xe鐨勫懡鍚嶇悊瑙d笉涓鑷達(dá)紝灝辨湁鍙兘鍑洪敊銆傞氬父鏉ヨ錛屾垜鏄範(fàn)鎯簬鐢?#8220;extern "C"”鍜?#8220;__cdecl”鐨勭粍鍚堛?/p> <p><strong>鍏佸鍑哄彉閲?/strong></p> <p>鍓嶉潰鍙浜?jiǎn)濡備綍瀵煎嚭鍑芥晭图岄偅濡備綍瀵煎囖Z竴涓彉閲忓憿錛熸柟娉曠被浼鹼紝鐢氳嚦鍙互璇村嚑涔庝竴鏍鳳紝鐪嬩唬鐮侊細(xì)</p> <p>lib.cpp</p> <div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000">#include </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">lib.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br>#include </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">windows.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br>#include </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">stdio.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br><br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> iExportInt;<br><br>BOOL APIENTRY DllMain( HANDLE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved)<br>{<br>    </span><span style="COLOR: #0000ff">switch</span><span style="COLOR: #000000"> (ul_reason_for_call)<br>    {<br>    </span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000"> DLL_PROCESS_ATTACH:<br>  iExportInt </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">112</span><span style="COLOR: #000000">;<br>  </span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br>    }<br>    </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> TRUE;<br>}</span></div> <p>lib.h</p> <div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000">#ifndef LIB_H<br></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000"> LIB_H</span><span style="COLOR: #000000"><br>#ifdef DLLTEST_EXPORTS<br></span><span style="COLOR: #0000ff">extern</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">C</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> __declspec(dllexport) iExportInt;<br></span><span style="COLOR: #0000ff">#else</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">extern</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">C</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> __declspec(dllimport) iExportInt;<br></span><span style="COLOR: #0000ff">#endif</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">#endif</span></div> <p>榪欐牱錛屽氨鍙互浜?jiǎn)锛屽拰瀵煎嚭鍑芥暟鏄病浠涔堝樊鍒惂錛熷悓鏍鳳紝浣犱篃鍙互鐢―epends瑙傚療鐢熸垚鐨凞LL錛屼綘浼?xì)鍙戠幇iExportInt榪欎釜瀵煎嚭絎﹀彿錛屼篃灝辨槸鎴戜滑瀵煎嚭鐨勮繖涓彉閲忎簡(jiǎn)銆傜幇鍦ㄧ湅CallDllTest鐨勪唬鐮侊細(xì)</p> <p>CallDllTest.cpp</p> <div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000">#include </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">stdafx.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br>#include </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">lib.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br><br>#pragma comment(lib, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">dllTest.lib</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)<br><br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> main(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> argc, </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> argv[])<br>{<br> printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, iExportInt);<br> iExportInt</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;<br> printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, iExportInt);<br> </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>}</span></div> <p>杈撳嚭鏄粈涔堬紵112鍜?13錛岃鏄庢垚鍔熶簡(jiǎn)銆備笉鐭ラ亾浣犺繖涓椂鍊欐湁娌℃湁鎯沖埌涓涓棶棰橈紝閭e氨鏄鏋滀袱涓繘紼嬪悓鏃惰皟鐢╠llTest.dll錛岃屼笖鍚屾椂淇敼鍜岃鍙杋ExportInt錛岄偅浼?xì)涓嶄細(xì)湄曟帀鍛㈠Q熻涓嶈鍋氫竴涓簰鏂ラ攣鍛紵絳旀鏄細(xì)涓嶄細(xì)錛屼笉闇瑕併傝繖寰楃泭浜嶹indows鍐呭瓨綆$悊鐨勪竴涓簳灞傚疄鐜版妧鏈紝鍙獵opy-on-write錛屽湪璋冪敤鎵ц“iExportInt++”鐨勬椂鍊欙紝鍏跺疄騫墮潪鐪熸淇敼浜?jiǎn)DLL涓殑鍊鹼紝鑰屾槸鍋氫簡(jiǎn)涓浠芥嫹璐濓紝閫氳繃鍐呭瓨鏄犲皠鏈哄埗錛屼嬌寰楃▼搴忚闂殑閭d釜“iExportInt”鍏跺疄鏄偅浠芥嫹璐濓紝鑰屽彟涓榪涚▼浣跨敤鐨勪篃鏄嚜宸辯殑鎷瘋礉錛屼簰涓嶅共娑夈?/p> <p><strong>涓冦佸叡浜唴瀛?/strong></p> <p>绱ф帴鐫鍓嶉潰榪欎釜闂錛岄偅濡傛灉鎴戜紒鍥鵑氳繃DLL鏉ヨ涓嶅悓榪涚▼鍏變韓涓孌靛唴瀛橈紝鑰屼笉鏄緋葷粺鎵ц榛樿鐨凜opy-on-write鎿嶄綔錛岄偅鎬庝箞鍔炲憿錛熸湁鍔炴硶錛佽繖鏄疢icrosoft鎻愪緵鐨勪竴涓柟娉曪紝涓漢瑙夊緱鏄釜涓嶉敊鐨勮繘紼嬮棿閫氫俊鐨勬柟娉曪紝姣斿涓や釜榪涚▼闇瑕佷氦鎹竴澶у潡鏁版嵁錛岃屼笖榪欎竴澶у潡鏁版嵁鍙樺寲姣旇緝棰戠箒錛岄氳繃鏁版嵁搴撳晩錛屾枃浠跺晩錛屽氨鏄懼緱鏈夌偣鎱紝濡傛灉閫氳繃socket鍟婏紝綆¢亾鍟婏紝灝辨樉寰楁湁浜涗笉鐩存帴錛岃繕鏄洿鎺ヤ嬌鐢ㄥ叡浜唴瀛樻潵寰楃洿鎺ワ紝浣嗗緢澶氫漢騫朵笉鐭ラ亾榪欎釜鍔熻兘錛屾垜榪欓噷璺熷ぇ瀹跺垎浜笅銆?/p> <p>lib.h</p> <div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000">#ifndef LIB_H<br></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000"> LIB_H</span><span style="COLOR: #000000"><br>#ifdef DLLTEST_EXPORTS<br></span><span style="COLOR: #0000ff">extern</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">C</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> __declspec(dllexport) unsigned </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000"> dataChunk[</span><span style="COLOR: #000000">100000</span><span style="COLOR: #000000">];<br></span><span style="COLOR: #0000ff">#else</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">extern</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">C</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> __declspec(dllimport) unsigned </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000"> dataChunk[</span><span style="COLOR: #000000">100000</span><span style="COLOR: #000000">];<br></span><span style="COLOR: #0000ff">#endif</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">#endif</span></div> <p>lib.cpp</p> <div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000">#include </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">lib.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br><br>#pragma data_seg(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">shared</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)<br>unsigned </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000"> dataChunk[</span><span style="COLOR: #000000">100000</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">{</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">};<br>#pragma data_seg()<br><br>#pragma comment(linker, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">/SECTION:shared,RWS</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)</span></div> <p>Build涓涓嬶紝鐒跺悗鐢―epends鐪嬬湅杈撳嚭鎯呭喌銆傜幇鍦ㄦ潵鏀笴allDllText.cpp銆傝繖閲屾湁闈炲父瑕佹敞鎰忕殑涓や釜鍦版柟錛屼竴鏄?#8220;={0}”榪欎釜鍒濆鍖栵紝榪欐槸蹇呴』鐨勶紝鍚﹀垯鍏變韓灝嗕笉璧蜂綔鐢紝Microsoft瑙勫畾浜?jiǎn)鍏变韩娈典竴瀹氶渶瑕佸厛鍒濆鍖栵紝鍝曞彧鏄粰絎竴涓厓绱犺祴涓殢渚夸粈涔堝奸兘濂斤紝濡傝繖涓緥瀛愶紝鎴戝彧鏄粰絎竴涓厓绱犺祴鍊間簡(jiǎn)涓?錛涘彟涓澶勮娉ㄦ剰鐨勬槸“/SECTION:shared,RWS"榪欎釜瀛楃涓詫紝涓棿鍙埆瑕佹湁絀烘牸錛屽惁鍒欎綘鍚屾牱浼?xì)鍙戠幇鍏变韩涓嶈捣浣滅敤锛屾垜褰撴椂璋冭瘯灏卞緢閮侀楕P紝鍥犱負(fù)鎴戜範(fàn)鎯湪鑻辨枃閫楀彿鍚庡姞涓┖鏍箋?/p> <p>CallDllText.cpp<br></p> <div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000">#include </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">stdafx.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br>#include </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">windows.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br>#include </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">lib.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br><br>#pragma comment(lib, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">dllTest.lib</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)<br><br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> main(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> argc, </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> argv[])<br>{<br> printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, dataChunk[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">);<br> Sleep(</span><span style="COLOR: #000000">10000</span><span style="COLOR: #000000">);<br>    </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>}</span></div> <p>Sleep(10000)浼?xì)璁┙E嬪簭鍫靛10縐掗挓錛岃繖鏍峰氨鍙互榪愯澶氫釜紼嬪簭鐨勫壇鏈紝鏉ヨ瀵熷叡浜殑鏁堟灉銆?/p> <p><strong>鍏佺粨鏉?/strong></p> <p>DLL娑電洊鐨勭煡璇嗛潰鐩稿綋騫匡紝鏈枃鍙槸綃囧叆闂ㄧ駭鐨勬枃绔狅紝浠嬬粛浜?jiǎn)涓浜涙瘮杈冨疄鐢ㄧ殑鍐呭鑰屽凡錛屽鏋滆榪涗竴姝ュ涔?fàn)锛岄渶瑕佺湅鐪嬨奧indows鏍稿績(jī)緙栫▼銆嬭繖縐嶇粡鍏歌憲浣滐紝鍏充簬DLL鐨勫緢澶氬唴瀹規(guī)垜閮芥病鏈夋彁鍙?qiáng)鍒板Q屾瘮濡侱LL鐨勫鍑烘柟娉曞叾瀹炴湁濂藉嚑縐嶏紝鎴戜粙緇嶇殑鍙槸鍏朵腑涓縐嶏紝浣嗘垜璁や負(fù)鎴戜粙緇嶇殑鏂規(guī)硶鏄渶濂界敤鑰屼笖鏄渶綆鍗曠殑銆傛垜浠啓紼嬪簭錛屾槸涓轟簡(jiǎn)瀹炵幇鏌愪簺搴旂敤錛岃屼笉鏄負(fù)浜?jiǎn)鐐鏌愪簺鎶鏈紝鎵浠ユ垜鏄亸鍚戜簬浣跨敤鎴愮啛錛屽彲闈犲拰鏄撹鐨勬柟娉曘?br></p> <img src ="http://www.shnenglu.com/guogangj/aggbug/97136.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/guogangj/" target="_blank">Jiang Guogang</a> 2009-09-24 16:35 <a href="http://www.shnenglu.com/guogangj/archive/2009/09/24/97136.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鏈綆鏄撶殑鍧愭爣鍒誨害鏍℃綆楁硶http://www.shnenglu.com/guogangj/archive/2009/08/26/94451.htmlJiang GuogangJiang GuogangWed, 26 Aug 2009 05:30:00 GMThttp://www.shnenglu.com/guogangj/archive/2009/08/26/94451.htmlhttp://www.shnenglu.com/guogangj/comments/94451.htmlhttp://www.shnenglu.com/guogangj/archive/2009/08/26/94451.html#Feedback1http://www.shnenglu.com/guogangj/comments/commentRss/94451.htmlhttp://www.shnenglu.com/guogangj/services/trackbacks/94451.html
浣滀負(fù)宸ョ▼甯堬紝緇忓父闇瑕佺敾浜涘浘琛ㄦ洸綰匡紝閭e埢搴﹀氨鎴愪簡(jiǎn)涓棶棰橈紝涓嬮潰鎴戜婦涓や釜渚嬪瓙璇磋榪欎釜闂錛?br>鏁板瓧緋誨垪1錛?.12錛?.4錛?.3錛?.16錛?.5錛?.9錛?1錛?2錛?.6
鐢繪垚鏇茬嚎錛岀敤Excel錛屽緢綆鍗曪紝浣犲緢蹇氨寮勫ソ浜?jiǎn)锛屽鍥惧Q?br>
鏁板瓧緋誨垪2錛?234321.1錛?234331.1錛?234343.1錛?234123.1錛?234356.1錛?234567.1錛?234399.1錛?234300.1
鍚屾牱錛岀敤Excel鐢繪垚鏇茬嚎錛屽涓嬪浘錛?br>

娉ㄦ剰綰靛潗鏍囩殑鍒誨害錛屾垜璇寸殑灝辨槸榪欎釜闂錛屽鏋滄槸浣狅紝濡備綍鏉ユ爣榪欎釜鍒誨害錛?br>
涓鑸潵璇達(dá)紝鎴戜滑鏃ュ父鐢熸椿涓湅鍒扮殑鍒誨害閮芥槸浠?錛?.5錛?錛?0涓洪棿闅旂殑錛屽鏋滅粰鍑轟簡(jiǎn)涓涓渶灝忓?.55錛屼竴涓渶澶у?.13錛岃姹傜敾鍑哄ぇ綰?涓埢搴︼紝閭e簲璇ユ庝箞鐢伙紵濡傛灉鏄垜錛屽ぇ姒傚氨鐢誨嚭榪欏嚑涓細(xì)4.4錛?.6錛?.8錛?.0錛?.2銆?br>
閭h繖鏍瘋涓嶈鍛紵(5.13-4.55)/5=0.116錛屼簬鏄敾鍑?guó)櫩欏嚑涓堈d害錛?.55錛?.666錛?.782錛?.898錛?.014錛?.13銆傚綋鐒朵篃鍙互錛屼絾榪欎釜綆楁硶鏈厤澶畝鍗曪紝鐢誨嚭鏉ョ殑鍒誨害涓嶅ソ鐪嬨?br>
閭f垜浠浣曟潵鎻忚堪鎴戜笂闈㈡彁鍒扮殑浠?錛?.5錛?錛?0涓洪棿闅旂殑鍒掑垎綆楁硶鍛紵鎴戜竴鐩存劅瑙夊緢鍥伴毦錛岀洿鍒頒粖澶╁姩鎵嬪幓鍐欙紝騫朵笖鎶婂畠鍐欏嚭鏉ヤ簡(jiǎn)錛屾墠鍙戠幇涔熷氨閭d箞鍑犺浠g爜錛屾垜鎶婃垜鐨勪唬鐮佽創(chuàng)鍑烘潵涓庡ぇ瀹跺垎浜紝鎴戠浉淇℃垜榪欎釜綆楁硶緇忚繃紼嶅井鐨勪慨鏀瑰氨鑳介傚簲鎵鏈夌殑鍧愭爣鍒誨害鍒掑垎銆?br>
浠g爜瀹炲湪綆鍗曪紝鎴戜笉鍐欎粈涔堟敞閲婁簡(jiǎn)錛屾垜瑙夊緱榪欐槸鎴戝啓鐨勬渶綺炬?zhèn)嶇殑灏徑E嬪簭涔嬩竴銆?br>
#include <math.h>

void RegulateAll(double dMin, double dMax, int iMaxAxisNum);

int main(int argc, char* argv[])
{
     RegulateAll(
2457);
       RegulateAll(
0.120.435);
       RegulateAll(
10001100025);
       RegulateAll(
-12.6556.36);
       RegulateAll(
5243217834.125378234435.125);
      RegulateAll(
-0.0430.0998);
     RegulateAll(
-123431-6732510);
     RegulateAll(
0.00.05);
    
return 0;
}


void RegulateAll(double dMin, double dMax, int iMaxAxisNum)
{
    
if(iMaxAxisNum<1 || dMax<dMin)
        
return;

    
double dDelta = dMax - dMin;
    
if(dDelta<1.0//Modify this by your requirement.
    {
        dMax
+=(1.0-dDelta)/2.0;
        dMin
-=(1.0-dDelta)/2.0;
    }

    dDelta 
= dMax - dMin;

    
int iExp = (int)(log(dDelta)/log(10.0))-2;
    
double dMultiplier = pow(10, iExp);
    
const double dSolutions[] = {122.5510202550100200250500};
    
int i;
    
for(i=0; i<sizeof(dSolutions)/sizeof(double); i++)
    
{
        
double dMultiCal = dMultiplier * dSolutions[i];
        
if(((int)(dDelta/dMultiCal) + 1)<=iMaxAxisNum)
        
{
            
break;
        }

    }


    
double dInterval = dMultiplier * dSolutions[i];

    
double dStartPoint = ((int)ceil(dMin/dInterval) - 1* dInterval;
    
int iAxisIndex;
    
for(iAxisIndex=01; iAxisIndex++)
    
{
        printf(
"%f", dStartPoint+dInterval*iAxisIndex);
        
if(dStartPoint+dInterval*iAxisIndex>dMax)
            
break;
        printf(
" | ");
    }


    printf(
"\n");
}

闄ゅ紑鎵撳嵃鍜屽墠闈㈢殑鏉′歡鍒ゆ柇澶栵紝鐪熺殑娌″嚑琛岋紝鑰屼笖鍙敤浜?jiǎn)涓涓潪甯告湁闄愮殑榪唬錛屾晥鐜囪嚜鐒舵槸寰堥珮鐨勩?/p>

]]>
銆怌SDN銆戝叧浜庘滈緙栬瘧鈥?/title><link>http://www.shnenglu.com/guogangj/archive/2009/04/23/80806.html</link><dc:creator>Jiang Guogang</dc:creator><author>Jiang Guogang</author><pubDate>Thu, 23 Apr 2009 02:01:00 GMT</pubDate><guid>http://www.shnenglu.com/guogangj/archive/2009/04/23/80806.html</guid><wfw:comment>http://www.shnenglu.com/guogangj/comments/80806.html</wfw:comment><comments>http://www.shnenglu.com/guogangj/archive/2009/04/23/80806.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/guogangj/comments/commentRss/80806.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/guogangj/services/trackbacks/80806.html</trackback:ping><description><![CDATA[<p style="FONT-FAMILY: 瀹?huà)浣?><span style="COLOR: red">銆?0060307鍙戣〃浜巄log.csdn.net錛?0090423閲嶇紪杈戙?/span><br><br><span style="FONT-SIZE: 18pt">涓銆侀緙栬瘧澶存枃浠惰鏄?/span><br><br>鎵璋撳ご鏂囦歡棰勭紪璇戯紝灝辨槸鎶婁竴涓伐紼?Project)涓嬌鐢ㄧ殑涓浜汳FC鏍囧噯澶存枃浠?濡俉indows.H銆丄fxwin.H)棰勫厛緙栬瘧錛屼互鍚庤宸ョ▼緙栬瘧鏃訛紝涓嶅啀緙栬瘧榪欓儴鍒嗗ご鏂囦歡錛屼粎浠呬嬌鐢ㄩ緙栬瘧鐨勭粨鏋溿傝繖鏍峰彲浠ュ姞蹇紪璇戦熷害錛岃妭鐪佹椂闂淬?br><br>棰勭紪璇戝ご鏂囦歡閫氳繃緙栬瘧stdafx.cpp鐢熸垚錛屼互宸ョ▼鍚嶅懡鍚嶏紝鐢變簬棰勭紪璇戠殑澶存枃浠剁殑鍚庣紑鏄?#8220;pch”錛屾墍浠ョ紪璇戠粨鏋滄枃浠舵槸projectname.pch銆?br><br>緙栬瘧鍣ㄩ氳繃涓涓ご鏂囦歡stdafx.h鏉ヤ嬌鐢ㄩ緙栬瘧澶存枃浠躲俿tdafx.h榪欎釜澶存枃浠跺悕鏄彲浠ュ湪project鐨勭紪璇戣緗噷鎸囧畾鐨勩傜紪璇戝櫒璁や負(fù)錛屾墍鏈夊湪鎸囦護(hù)#include "stdafx.h"鍓嶇殑浠g爜閮芥槸棰勭紪璇戠殑錛屽畠璺寵繃#include "stdafx. h"鎸囦護(hù)錛屼嬌鐢╬rojectname.pch緙栬瘧榪欐潯鎸囦護(hù)涔嬪悗鐨勬墍鏈変唬鐮併?br><br>鍥犳錛屾墍鏈夌殑CPP瀹炵幇鏂囦歡絎竴鏉¤鍙ラ兘鏄細(xì)#include "stdafx.h"銆?br><br>鍙﹀錛屾瘡涓涓疄鐜版枃浠禖PP閮藉寘鍚簡(jiǎn)濡備笅璇彞錛?/p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">#ifdef _DEBUG<br></span><span style="COLOR: #0000ff">#undef</span><span style="COLOR: #000000"> THIS_FILE</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000"> THIS_FILE[] </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> __FILE__;<br></span><span style="COLOR: #0000ff">#endif</span></div> <p style="FONT-FAMILY: 瀹?huà)浣? align=left>榪欐槸琛ㄧず錛屽鏋滅敓鎴愯皟璇曠増鏈紝瑕佹寚紺哄綋鍓嶆枃浠剁殑鍚嶇О銆俖_FILE__鏄竴涓畯錛屽湪緙栬瘧鍣ㄧ紪璇戣繃紼嬩腑緇欏畠璧嬪間負(fù)褰撳墠姝e湪緙栬瘧鐨勬枃浠跺悕縐般?br><br>vc.net榛樿鎯呭喌涓嬩嬌鐢ㄩ緙栬瘧澶?/Yu)錛屼笉鏄庣櫧鐨勫湪鍔犲叆鏂?h鏂囦歡鍚庣紪璇戞椂鎬誨嚭鐜癴atal error C1010: 鍦ㄦ煡鎵鵑緙栬瘧澶存寚浠ゆ椂閬囧埌鎰忓鐨勬枃浠剁粨灝劇殑閿欒銆傝В鍐蟲(chóng)柟娉曟槸鍦ㄥ湪include澶存枃浠剁殑鍦版柟鍔犱笂#include "stdafx.h",鎴栬呮墦欏圭洰灞炴э紝鎵懼埌“C/C++”鏂囦歡澶癸紝鍗曞嚮“棰勭紪璇戝ご”灞炴ч〉銆備慨鏀?#8220;鍒涘緩/浣跨敤棰勭紪璇戝ご”灞炴т負(fù)“涓嶄嬌鐢ㄩ緙栬瘧澶?#8221;銆?br><br><span style="FONT-SIZE: 18pt">浜屻丆/C++澶存枃浠朵竴瑙?/span><br><br>C銆佷紶緇?C++<br>#include <assert.h>銆銆銆銆//璁懼畾鎻掑叆鐐?br>#include <ctype.h>銆銆銆銆 //瀛楃澶勭悊<br>#include <errno.h>銆銆銆銆 //瀹氫箟閿欒鐮?br>#include <float.h>銆銆銆銆 //嫻偣鏁板鐞?br>#include <fstream.h>銆銆銆 //鏂囦歡杈撳叆錛忚緭鍑?br>#include <iomanip.h>銆銆銆 //鍙傛暟鍖栬緭鍏ワ紡杈撳嚭<br>#include <iostream.h>銆銆銆//鏁版嵁?huà)箒杈撳叆锛忚緭鍑?br>#include <limits.h>銆銆銆銆//瀹氫箟鍚勭鏁版嵁綾誨瀷鏈鍊煎父閲?br>#include <locale.h>銆銆銆銆//瀹氫箟鏈湴鍖栧嚱鏁?br>#include <math.h>銆銆銆銆銆//瀹氫箟鏁板鍑芥暟<br>#include <stdio.h>銆銆銆銆 //瀹氫箟杈撳叆錛忚緭鍑哄嚱鏁?br>#include <stdlib.h>銆銆銆銆//瀹氫箟鏉傞」鍑芥暟鍙?qiáng)鍐呭瓨鍒嗛厤鍑芥?br>#include <string.h>銆銆銆銆//瀛楃涓插鐞?br>#include <strstrea.h>銆銆銆//鍩轟簬鏁扮粍鐨勮緭鍏ワ紡杈撳嚭<br>#include <time.h>銆銆銆銆銆//瀹氫箟鍏充簬鏃墮棿鐨勫嚱鏁?br>#include <wchar.h>銆銆銆銆 //瀹藉瓧絎﹀鐞嗗強(qiáng)杈撳叆錛忚緭鍑?br>#include <wctype.h>銆銆銆銆//瀹藉瓧絎﹀垎綾?br><br>鏍囧噯 C++銆錛堝悓涓婄殑涓嶅啀娉ㄩ噴錛?br>#include <algorithm>銆銆銆 //STL 閫氱敤綆楁硶<br>#include <bitset>銆銆銆銆銆//STL 浣嶉泦瀹瑰櫒<br>#include <cctype><br>#include <cerrno><br>#include <clocale><br>#include <cmath><br>#include <complex>銆銆銆銆 //澶嶆暟綾?br>#include <cstdio><br>#include <cstdlib><br>#include <cstring><br>#include <ctime><br>#include <deque>銆銆銆銆銆 //STL 鍙岀闃熷垪瀹瑰櫒<br>#include <exception>銆銆銆 //寮傚父澶勭悊綾?br>#include <fstream><br>#include <functional>銆銆銆//STL 瀹氫箟榪愮畻鍑芥暟錛堜唬鏇胯繍綆楃錛?br>#include <limits><br>#include <list>銆銆銆銆銆銆//STL 綰挎у垪琛ㄥ鍣?br>#include <map>銆銆銆銆銆銆 //STL 鏄犲皠瀹瑰櫒<br>#include <iomanip><br>#include <ios>銆銆銆銆銆銆 //鍩烘湰杈撳叆錛忚緭鍑烘敮鎸?br>#include <iosfwd>銆銆銆銆銆//杈撳叆錛忚緭鍑虹郴緇熶嬌鐢ㄧ殑鍓嶇疆澹版槑<br>#include <iostream><br>#include <istream>銆銆銆銆 //鍩烘湰杈撳叆嫻?br>#include <ostream>銆銆銆銆 //鍩烘湰杈撳嚭嫻?br>#include <queue>銆銆銆銆銆 //STL 闃熷垪瀹瑰櫒<br>#include <set>銆銆銆銆銆銆 //STL 闆嗗悎瀹瑰櫒<br>#include <sstream>銆銆銆銆 //鍩轟簬瀛楃涓茬殑嫻?br>#include <stack>銆銆銆銆銆 //STL 鍫嗘爤瀹瑰櫒銆銆銆銆<br>#include <stdexcept>銆銆銆 //鏍囧噯寮傚父綾?br>#include <streambuf>銆銆銆 //搴曞眰杈撳叆錛忚緭鍑烘敮鎸?br>#include <string>銆銆銆銆銆//瀛楃涓茬被<br>#include <utility>銆銆銆銆 //STL 閫氱敤妯℃澘綾?br>#include <vector>銆銆銆銆銆//STL 鍔ㄦ佹暟緇勫鍣?br>#include <cwchar><br>#include <cwctype><br><br>using namespace std;<br><br>C99 澧炲姞<br>#include <complex.h>銆銆 //澶嶆暟澶勭悊<br>#include <fenv.h>銆銆銆銆//嫻偣鐜<br>#include <inttypes.h>銆銆//鏁存暟鏍煎紡杞崲<br>#include <stdbool.h>銆銆 //甯冨皵鐜<br>#include <stdint.h>銆銆銆//鏁村瀷鐜<br>#include <tgmath.h>銆銆銆//閫氱敤綾誨瀷鏁板瀹?br><br><span style="FONT-SIZE: 18pt">涓夈侀澶勭悊鐨勭敱鏉?/span><br><br>鍦–++鐨勫巻鍙插彂灞曚腑錛屾湁寰堝鐨勮璦鐗瑰緛錛堢壒鍒槸璇█鐨勬櫐娑╀箣澶勶級(jí)鏉ヨ嚜浜嶤璇█錛岄澶勭悊灝辨槸鍏朵腑鐨勪竴涓侰++浠嶤璇█閭i噷鎶奀璇█棰勫鐞嗗櫒緇ф壙榪囨潵錛孋璇█棰勫鐞嗗櫒錛岃Bjarne鍗氬+(C++涔嬬埗)綆縐頒負(fù)Cpp錛屼笉鐭ラ亾鏄笉鏄疌 Program Preprocessor鐨勭畝縐般?br><br><span style="FONT-SIZE: 18pt">鍥涖佸父瑙佺殑棰勫鐞嗗姛鑳?/span><br><br>棰勫鐞嗗櫒鐨勪富瑕佷綔鐢ㄥ氨鏄妸閫氳繃棰勫鐞嗙殑鍐呭緩鍔熻兘瀵逛竴涓祫婧愯繘琛岀瓑浠鋒浛鎹紝鏈甯歌鐨勯澶勭悊鏈夛細(xì)鏂囦歡鍖呭惈錛屾潯浠剁紪璇戙佸竷灞鎺у埗鍜屽畯鏇挎崲4縐嶃?br><br>1錛屾枃浠跺寘鍚細(xì)#include 鏄竴縐嶆渶涓哄父瑙佺殑棰勫鐞嗭紝涓昏鏄仛涓烘枃浠剁殑寮曠敤緇勫悎婧愮▼搴忔鏂囥?br>2錛屾潯浠剁紪璇戯細(xì)#if,#ifndef,#ifdef,#endif,#undef絳変篃鏄瘮杈冨父瑙佺殑棰勫鐞嗭紝涓昏鏄繘琛岀紪璇戞椂榪涜鏈夐夋嫨鐨勬寫(xiě)閫夛紝娉ㄩ噴鎺変竴浜涙寚瀹氱殑浠g爜錛屼互杈懼埌鐗堟湰鎺у埗銆侀槻姝㈠鏂囦歡閲嶅鍖呭惈鐨勫姛鑳姐?br>3錛屽竷灞鎺у埗錛?pragma錛岃繖涔熸槸鎴戜滑搴旂敤棰勫鐞嗙殑涓涓噸瑕佹柟闈紝涓昏鍔熻兘鏄負(fù)緙栬瘧紼嬪簭鎻愪緵闈炲父瑙勭殑鎺у埗嫻佷俊鎭?br>4錛屽畯鏇挎崲錛?define錛岃繖鏄渶甯歌鐨勭敤娉曪紝瀹冨彲浠ュ畾涔夌鍙峰父閲忋佸嚱鏁板姛鑳姐侀噸鏂板懡鍚嶃佸瓧絎︿覆鐨勬嫾鎺ョ瓑鍚勭鍔熻兘銆?br><br><span style="FONT-SIZE: 18pt">浜斻侀澶勭悊鎸囦護(hù)</span><br><br>棰勫鐞嗘寚浠ょ殑鏍煎紡濡備笅錛?br><br>#directive tokens<br><br>#絎﹀彿搴旇鏄繖涓琛岀殑絎竴涓潪絀哄瓧絎︼紝涓鑸垜浠妸瀹冩斁鍦ㄨ搗濮嬩綅緗傚鏋滄寚浠や竴琛屾斁涓嶄笅錛屽彲浠ラ氳繃“\”榪涜鎺у埗錛屼緥濡傦細(xì)<br><br>#define Error if(error) exit(1)<br><br>絳変環(huán)浜?br><br>#define Error \<br>if(error) exit(1)<br><br>涓嬮潰鎴戜滑鐪嬩竴涓嬪父瑙佺殑棰勫鐞嗘寚浠わ細(xì)<br>#define 瀹忓畾涔?br>#undef 鏈畾涔夊畯<br>#include 鏂囨湰鍖呭惈<br>#ifdef 濡傛灉瀹忚瀹氫箟灝辮繘琛岀紪璇?br>#ifndef 濡傛灉瀹忔湭琚畾涔夊氨榪涜緙栬瘧<br>#endif 緇撴潫緙栬瘧鍧楃殑鎺у埗<br>#if 琛ㄨ揪寮忛潪闆跺氨瀵逛唬鐮佽繘琛岀紪璇?br>#else 浣滀負(fù)鍏朵粬棰勫鐞嗙殑鍓╀綑閫夐」榪涜緙栬瘧<br>#elif 榪欐槸涓縐?else鍜?if鐨勭粍鍚堥夐」<br>#line 鏀瑰彉褰撳墠鐨勮鏁板拰鏂囦歡鍚嶇О<br>#error 杈撳嚭涓涓敊璇俊鎭?br>#pragma 涓虹紪璇戠▼搴忔彁渚涢潪甯歌鐨勬帶鍒舵祦淇℃伅<br><br>涓嬮潰鎴戜滑瀵硅繖浜涢澶勭悊榪涜涓涓鐨勮鏄庯紝鑰冭檻鍒板畯鐨勯噸瑕佹у拰綣佺悙鎬э紝鎴戜滑鎶婂畠鏀懼埌鏈鍚庤銆?br><br><span style="FONT-SIZE: 18pt">鍏佹枃浠跺寘鍚寚浠?br></span><br>榪欑棰勫鐞嗕嬌鐢ㄦ柟寮忔槸鏈涓哄父瑙佺殑錛屽鉤鏃舵垜浠紪鍐欑▼搴忛兘浼?xì)鐢ㄥ垘图屾渶甯歌鐨勭敤娉曟槸錛?br>#include <iostream> //鏍囧噯搴撳ご鏂囦歡<br>#include <iostream.h> //鏃у紡鐨勬爣鍑嗗簱澶存枃浠?br>#include "IO.h" //鐢ㄦ埛鑷畾涔夌殑澶存枃浠?br>#include "../file.h" //UNIX涓嬬殑鐖剁洰褰曚笅鐨勫ご鏂囦歡<br>#include "/usr/local/file.h" //UNIX涓嬬殑瀹屾暣璺緞<br>#include "..\file.h" //Dos涓嬬殑鐖剁洰褰曚笅鐨勫ご鏂囦歡<br>#include "\usr\local\file.h" //Dos涓嬬殑瀹屾暣璺緞<br><br>錛堝叾瀹濪OS/Windows鐨勭洰褰曞垎闅斾篃鍙互鐢ㄦ枩鏉狅紝涓轟簡(jiǎn)鍜孶nix鍏煎錛屽氨緇熶竴鐢ㄦ枩鏉犲惂錛?br><br>榪欓噷闈㈡湁2涓湴鏂硅娉ㄦ剰錛?br><br>1銆佹垜浠敤<iostream>榪樻槸<iostream.h>?<br><br>鎴戜滑涓誨紶浣跨敤<iostream>錛岃屼笉鏄?lt;iostream.h>,涓轟粈涔堝憿錛熸垜鎯充綘鍙兘榪樿寰楁垜鏇劇粡緇欏嚭榪囧嚑鐐圭悊鐢憋紝榪欓噷鎴戝ぇ鑷寸殑璇翠竴涓嬶細(xì)<br><br>棣栧厛錛宧鏍煎紡鐨勫ご鏂囦歡鏃╁湪98騫?鏈堜喚灝辮鏍囧噯濮斿憳?shù)細(xì)鎶涘純浜?jiǎn)錛屾垜浠簲璇ョ揣璺熸爣鍑嗭紝浠ラ傚悎鏃朵唬鐨勫彂灞曘傚叾嬈★紝iostream.h鍙敮鎸佺獎(jiǎng)瀛楃闆嗭紝iostream鍒欐敮鎸佺獎(jiǎng)/瀹藉瓧絎﹂泦銆傝繕鏈夛紝鏍囧噯瀵筰ostream浣滀簡(jiǎn)寰堝鐨勬敼鍔紝鎺ュ彛鍜屽疄鐜伴兘鏈変簡(jiǎn)鍙樺寲銆傛渶鍚庯紝iostream緇勪歡鍏ㄩ儴鏀懼叆namespace std涓紝闃叉浜?jiǎn)鍚嶅瓧姹℃煋銆?br><br>2銆?lt;io.h>鍜?io.h"鐨勫尯鍒紵<br><br>鍏跺疄浠栦滑鍞竴鐨勫尯鍒氨鏄悳绱㈣礬寰勪笉鍚岋細(xì)瀵逛簬#include <io.h> 錛岀紪璇戝櫒浠庢爣鍑嗗簱璺緞寮濮嬫悳绱㈠浜?include "io.h" 錛岀紪璇戝櫒浠庣敤鎴風(fēng)殑宸ヤ綔璺緞寮濮嬫悳绱€?br><br><span style="FONT-SIZE: 18pt">涓冦佺紪璇戞帶鍒舵寚浠?/span><br><br>榪欎簺鎸囦護(hù)鐨勪富瑕佺洰鐨勬槸榪涜緙栬瘧鏃惰繘琛屾湁閫夋嫨鐨勬寫(xiě)閫夛紝娉ㄩ噴鎺変竴浜涙寚瀹氱殑浠g爜錛屼互杈懼埌鐗堟湰鎺у埗銆侀槻姝㈠鏂囦歡閲嶅鍖呭惈鐨勫姛鑳姐備嬌鐢ㄦ牸寮忥紝濡備笅錛?br><br><strong>1銆?ifdef identifier</strong><br><br>濡傛灉identifier涓轟竴涓畾涔変簡(jiǎn)鐨勭鍙鳳紝your code灝變細(xì)琚紪璇戯紝鍚﹀垯鍓旈櫎銆?br>#ifdef identifier<br>your code<br>#endif<br><br><strong>2銆?ifndef identifier<br></strong><br>濡傛灉identifier涓轟竴涓湭瀹氫箟鐨勭鍙鳳紝your code灝變細(xì)琚紪璇戯紝鍚﹀垯鍓旈櫎銆?br>#ifndef identifier<br>your code<br>#endif<br><br><strong>3銆?if expression</strong><br><br>濡傛灉expression闈為浂錛寉our code灝變細(xì)琚紪璇戯紝鍚﹀垯鍓旈櫎銆?br>#if expression<br>your code<br>#endif<br><br><strong>4銆?ifdef identifier</strong><br><br>濡傛灉identifier涓轟竴涓畾涔変簡(jiǎn)鐨勭鍙鳳紝your code1灝變細(xì)琚紪璇戯紝鍚﹀垯your code2灝變細(xì)琚紪璇戙?br>#ifdef identifier<br>your code1<br>#else<br>your code2<br>#endif<br><br><strong>5銆?else涓?elif</strong><br><br>濡傛灉epression1闈為浂錛屽氨緙栬瘧your code1錛屽惁鍒欙紝濡傛灉expression2闈為浂錛屽氨緙栬瘧your code2錛屽惁鍒欙紝灝辯紪璇憏our code3銆?br>#if expressin1<br>your code1<br>#elif expression2 //鍛靛懙錛宔lif<br>your code2<br>#else<br>your code3<br>#enif<br><br>鍏朵粬棰勭紪璇戞寚浠ら櫎浜?jiǎn)涓婇潰鎴戜滑璇寸殑闆嗕腑甯哥敤鐨劸~栬瘧鎸囦護(hù)錛岃繕鏈?縐嶄笉澶父瑙佺殑緙栬瘧鎸囦護(hù)錛?line銆?error銆?pragma錛屾垜浠帴涓嬫潵灝辯畝鍗曠殑璋堜竴涓嬨?br><br><strong>6錛?line</strong><br><br>璇硶濡備笅錛?br><br>#line number filename<br><br>渚嬪錛?br><br>#line 30 a.h<br><br>鍏朵腑錛屾枃浠跺悕a.h鍙互鐪佺暐涓嶅啓銆傝繖鏉℃寚浠ゅ彲浠ユ敼鍙樺綋鍓嶇殑琛屽彿鍜屾枃浠跺悕錛屼緥濡備笂闈㈢殑榪欐潯棰勫鐞嗘寚浠ゅ氨鍙互鏀瑰彉褰撳墠鐨勮鍙蜂負(fù)30錛屾枃浠跺悕鏄痑.h銆傚垵鐪嬭搗鏉ヤ技涔庢病鏈変粈涔堢敤錛屼笉榪囷紝浠栬繕鏄湁鐐圭敤鐨勶紝閭e氨鏄敤鍦ㄧ紪璇戝櫒鐨勭紪鍐欎腑錛屾垜浠煡閬撶紪璇戝櫒瀵笴++婧愮爜緙栬瘧榪囩▼涓細(xì)浜х敓涓浜涗腑闂存枃浠訛紝閫氳繃榪欐潯鎸囦護(hù)錛屽彲浠ヤ繚璇佹枃浠跺悕鏄浐瀹氱殑錛屼笉浼?xì)琚珮q欎簺涓棿鏂囦歡浠f浛錛屾湁鍒╀簬榪涜鍒嗘瀽銆?br><br><strong>7錛?error</strong><br><br>璇硶濡備笅錛?br><br>#error info<br><br>渚嬪錛?br><br>#ifndef UNIX<br>#error This software requires the UNIX OS.<br>#endif<br><br>榪欐潯鎸囦護(hù)涓昏鏄粰鍑洪敊璇俊鎭紝涓婇潰鐨勮繖涓緥瀛愬氨鏄紝濡傛灉娌℃湁鍦║NIX鐜涓嬶紝灝變細(xì)杈撳嚭This software requires the UNIX OS.鐒跺悗璇卞彂緙栬瘧鍣ㄧ粓姝€傛墍浠ユ葷殑鏉ヨ錛岃繖鏉℃寚浠ょ殑鐩殑灝辨槸鍦ㄥ嚭鐜板叾瀹冪紪璇戦敊璇箣鍓嶈兘澶熺粰鍑轟竴瀹氱殑淇℃伅銆?br><br><strong>8錛?pragma</strong><br><br>瀹冩槸闈炵粺涓鐨勶紝浠栬渚濋潬鍚勪釜緙栬瘧鍣ㄧ敓浜ц呫備緥濡俈C++涓細(xì)<br><br>#pragma comment(lib,"dllTest.lib")<br><br>瀵煎叆搴揹llTest.lib銆?br><br><span style="FONT-SIZE: 18pt">鍏侀瀹氫箟鏍囪瘑絎?/span><br><br>涓轟簡(jiǎn)澶勭悊涓浜涙湁鐢ㄧ殑淇℃伅錛岄澶勭悊瀹氫箟浜?jiǎn)涓浜涢澶勭悊鏍囪瘑絎︼紝铏界劧鍚勭緙栬瘧鍣ㄧ殑棰勫鐞嗘爣璇嗙涓嶅敖鐩稿悓錛屼絾鏄粬浠兘浼?xì)澶勭悊涓嬮潰鐨?縐嶏細(xì)<br><br>__FILE__ 姝e湪緙栬瘧鐨勬枃浠剁殑鍚嶅瓧<br>__LINE__ 姝e湪緙栬瘧鐨勬枃浠剁殑琛屽彿<br>__DATE__ 緙栬瘧鏃跺埢鐨勬棩鏈熷瓧絎︿覆錛屼緥濡傦細(xì) "25 Dec 2000"<br>__TIME__ 緙栬瘧鏃跺埢鐨勬椂闂村瓧絎︿覆錛屼緥濡傦細(xì) "12:30:55"<br><br>渚嬪錛歝out<<"The file is :"<<__FILE__"<<"! The lines is:"<<__LINE__<<endl;<br><br><span style="FONT-SIZE: 18pt">涔?jié)銆侀澶勭悊浣曞幓浣曚粠<br></span><br>濡備綍鍙栦唬#include棰勫鐞嗘寚浠わ紝鎴戜滑鍦ㄨ繖閲屽氨涓嶅啀涓涓璁ㄨ浜?jiǎn)銆侰++騫舵病鏈変負(fù)#include鎻愪緵鏇夸唬褰㈠紡錛屼絾鏄痭amespace鎻愪緵浜?jiǎn)涓縐嶄綔鐢ㄥ煙鏈哄埗錛屽畠鑳戒互鏌愮鏂瑰紡鏀寔緇勫悎錛屽埄鐢ㄥ畠鍙互鏀瑰杽#include鐨勮涓烘柟寮忥紝浣嗘槸鎴戜滑榪樻槸鏃犳硶鍙栦唬#include銆?br><br>#pragma搴旇綆楁槸涓涓彲鏈夊彲鏃犵殑棰勫鐞嗘寚浠わ紝鎸夌収Bjarne鐨勮瘽璇達(dá)紝灝辨槸錛?#8220;#pragma琚繃鍒嗙殑緇忓父鐨勭敤浜庡皢璇█璇箟鐨勫彉褰㈤殣钘忓埌緙栬瘧緋葷粺閲岋紝鎴栬呰鐢ㄤ簬鎻愪緵甯︽湁鐗規(guī)畩璇箟鍜岀鎷欒娉曠殑璇█鎵╁厖銆?#8221;<br><br>瀵逛簬#ifdef錛屾垜浠粛鐒舵潫鎵嬫棤絳栵紝灝辯畻鏄垜浠埄鐢╥f璇彞鍜屽父閲忚〃杈懼紡錛屼粛鐒朵笉瓚充互鏇夸唬瀹冿紝鍥犱負(fù)涓涓猧f璇彞鐨勬鏂囧繀欏誨湪璇硶涓婃紜紝婊¤凍綾繪鏌ワ紝鍗充嬌浠栧鍦ㄤ竴涓粷涓嶄細(xì)琚墽琛岀殑鍒嗘敮閲岄潰銆?br><br><span style="FONT-SIZE: 18pt">鍗併侀緙栬瘧澶存枃浠剁殑琛ュ厖璇存槑</span><br><br>榪欓噷浠嬬粛VC6鐨勯緙栬瘧鍔熻兘鐨勪嬌鐢紝鐢變簬棰勭紪璇戣緇嗕嬌鐢ㄦ瘮杈冪殑澶嶆潅錛岃繖閲屽彧浠嬬粛鍑犱釜鏈閲嶈鐨勯緙栬瘧鎸囦護(hù): /Yu, /Yc,/Yx,/Fp銆傚叾瀹冪殑璇︾粏璧勬枡鍙互鍙傝?<br><br>MSDN -> Visual Studio 6.0 Document -> Visual C++ 6.0 Document -> VC++ Programmer Guider -> Compiler and Linker -> Details -> Creating Precompiled Header files<br><br>棰勭紪璇戝ご鐨勬蹇碉細(xì)<br><br>鎵璋撶殑棰勭紪璇戝ご灝辨槸鎶婁竴涓伐紼嬩腑鐨勯偅涓閮ㄥ垎浠g爜錛岄鍏堢紪璇戝ソ鏀懼湪涓涓枃浠墮噷錛堥氬父鏄互.pch涓烘墿灞曞悕鐨勶級(jí)錛岃繖涓枃浠跺氨縐頒負(fù)棰勭紪璇戝ご鏂囦歡榪欎簺棰勫厛緙栬瘧濂界殑浠g爜鍙互鏄換浣曠殑C/C++浠g爜錛岀敋鑷蟲(chóng)槸inline鐨勫嚱鏁幫紝浣嗘槸蹇呴』鏄ǔ瀹氱殑錛屽湪宸ョ▼寮鍙戠殑榪囩▼涓笉浼?xì)琚l忓父鏀瑰彉銆傚鏋滆繖浜涗唬鐮佽淇敼錛屽垯闇瑕侀噸鏂扮紪璇戠敓鎴愰緙栬瘧澶存枃浠躲傛敞鎰忕敓鎴愰緙栬瘧澶存枃浠舵槸寰堣楁椂闂寸殑銆傚悓鏃朵綘寰楁敞鎰忛緙栬瘧澶存枃浠墮氬父寰堝ぇ錛岄氬父鏈?-7M澶с傛敞鎰忓強(qiáng)鏃舵竻鐞嗛偅浜涙病鏈夌敤鐨勯緙栬瘧澶存枃浠躲?br><br>涔熻浣犱細(xì)闂細(xì)鐜板湪鐨勭紪璇戝櫒閮芥湁Time stamp鐨勫姛鑳斤紝緙栬瘧鍣ㄥ湪緙栬瘧鏁翠釜宸ョ▼鐨勬椂鍊欙紝瀹冨彧浼?xì)缂栬瘧閭d簺缁彉q囦慨鏀圭殑鏂囦歡錛岃屼笉浼?xì)鍘痪~栬瘧閭d簺浠庝笂嬈$紪璇戣繃錛屽埌鐜板湪娌℃湁琚慨鏀硅繃鐨勬枃浠躲傞偅涔堜負(fù)浠涔堣繕瑕侀緙栬瘧澶存枃浠跺憿錛熺瓟妗堝湪榪欓噷錛屾垜浠煡閬撶紪璇戝櫒鏄互鏂囦歡涓哄崟浣嶇紪璇戠殑錛屼竴涓枃浠剁粡榪囦慨鏀瑰悗錛屼細(xì)閲嶆柊緙栬瘧鏁翠釜鏂囦歡錛屽綋鐒跺湪榪欎釜鏂囦歡閲屽寘鍚殑鎵鏈夊ご鏂囦歡涓殑涓滆タ錛?eg Macro, Preprocessor 錛夐兘瑕侀噸鏂板鐞嗕竴閬嶃俈C鐨勯緙栬瘧澶存枃浠朵繚瀛樼殑姝f槸榪欓儴鍒嗕俊鎭備互閬垮厤姣忔閮借閲嶆柊澶勭悊榪欎簺澶存枃浠躲?br><br>鏍規(guī)嵁涓婃枃浠嬬粛錛岄緙栬瘧澶存枃浠剁殑浣滅敤褰撶劧灝辨槸鎻愰珮?shù)究瀹滈熷害浜?jiǎn)锛屾湁浜?jiǎn)瀹冧綘娌℃湁蹇呰姣忔閮界紪璇戦偅浜涗笉闇瑕佺粡甯告敼鍙樼殑浠g爜銆傜紪璇戞ц兘褰撶劧灝辨彁楂樹(shù)簡(jiǎn)銆備絾鏍規(guī)嵁鎴戠殑瀹炶返緇忛獙錛屼嬌鐢╒C6緙栬瘧鍣紝鍦ㄧ紪璇戜竴涓皬紼嬪簭鐨勬椂鍊欙紝鐢ㄤ笉鐢ㄩ緙栬瘧澶存枃浠訛紝鍩烘湰鐪嬩笉鍑虹紪璇戦熷害鐨勫樊璺濓紝鍙兘瀵逛簬涓涓ぇ鍨嬬▼搴忔潵璇達(dá)紝榪欑緙栬瘧閫熷害宸墠鑳戒綋鐜板嚭鏉ャ?br><br>瑕佷嬌鐢ㄩ緙栬瘧澶達(dá)紝鎴戜滑蹇呴』鎸囧畾涓涓ご鏂囦歡錛岃繖涓ご鏂囦歡鍖呭惈鎴戜滑涓嶄細(xì)緇忓父鏀瑰彉鐨勪唬鐮佸拰鍏朵粬鐨勫ご鏂囦歡錛岀劧鍚庢垜浠敤榪欎釜澶存枃浠舵潵鐢熸垚涓涓緙栬瘧澶存枃浠訛紙.pch鏂囦歡錛夋兂蹇呭ぇ瀹墮兘鐭ラ亾 StdAfx.h榪欎釜鏂囦歡銆傚緢澶氫漢閮借涓鴻繖鏄疺C鎻愪緵鐨勪竴涓?#8220;緋葷粺綰у埆”鐨勶紝緙栬瘧鍣ㄥ甫鐨勪竴涓ご鏂囦歡銆傚叾瀹炰笉鏄殑錛岃繖涓枃浠跺彲浠ユ槸浠諱綍鍚嶅瓧鐨勩傛垜浠潵鑰冨療涓涓吀鍨嬬殑鐢盇ppWizard鐢熸垚鐨凪FC Dialog Based紼嬪簭鐨勯緙栬瘧澶存枃浠躲傦紙鍥犱負(fù)AppWizard浼?xì)湄?fù)鎴戜滑鎸囧畾濂藉浣曚嬌鐢ㄩ緙栬瘧澶存枃浠訛紝榛樿鐨勬槸StdAfx.h錛岃繖鏄疺C璧風(fēng)殑鍚嶅瓧錛夈傛垜浠細(xì)鍙戠幇榪欎釜澶存枃浠墮噷鍖呭惈浜?jiǎn)浠ヤ笅鐨勫ご鏂囦挥灱?xì)<br><br>#include <afxwin.h>    // MFC core and standard components<br>#include <afxext.h>    // MFC extensions<br>#include <afxdisp.h>   // MFC Automation classes<br>#include <afxdtctl.h>  // MFC support for Internet Explorer 4 Common Controls<br>#include <afxcmn.h><br><br>榪欎簺姝f槸浣跨敤MFC鐨勫繀欏誨寘鍚殑澶存枃浠訛紝褰撶劧鎴戜滑涓嶅お鍙兘鍦ㄦ垜浠殑宸ョ▼涓慨鏀硅繖浜涘ご鏂囦歡鐨勶紝鎵浠ヨ浠栦滑鏄ǔ瀹氱殑銆?br><br>閭d箞鎴戜滑濡備綍鎸囧畾瀹冩潵鐢熸垚棰勭紪璇戝ご鏂囦歡銆傛垜浠煡閬撲竴涓ご鏂囦歡鏄笉鑳界紪璇戠殑銆傛墍浠ユ垜浠繕闇瑕佷竴涓猚pp鏂囦歡鏉ョ敓鎴?pch 鏂囦歡銆傝繖涓枃浠墮粯璁ょ殑灝辨槸StdAfx.cpp銆傚湪榪欎釜鏂囦歡閲屽彧鏈変竴鍙ヤ唬鐮佸氨鏄細(xì)#include “Stdafx.h”銆傚師鍥犳槸鐞嗘墍褰撶劧鐨勶紝鎴戜滑浠呬粎鏄瀹冭兘澶熺紪璇戣屽凡鈥曗曗曚篃灝辨槸璇達(dá)紝瑕佺殑鍙槸瀹冪殑.cpp鐨勬墿灞曞悕銆傛垜浠彲浠ョ敤/Yc緙栬瘧寮鍏蟲(chóng)潵鎸囧畾StdAfx.cpp鏉ョ敓鎴愪竴涓?pch鏂囦歡錛岄氳繃/Fp緙栬瘧寮鍏蟲(chóng)潵鎸囧畾鐢熸垚鐨刾ch鏂囦歡鐨勫悕瀛椼傛墦寮project ->Setting->C/C++ 瀵硅瘽妗嗐傛妸Category鎸囧悜Precompiled Header銆傚湪宸﹁竟鐨勬爲(wèi)褰㈣鍥鵑噷閫夋嫨鏁翠釜宸ョ▼錛屽涓嬪浘錛?br><br><img height=389 src="http://www.shnenglu.com/images/cppblog_com/guogangj/20090423_precompile_1.jpg" width=410 border=0><br>錛堝浘錛戯級(jí)<br><br>鍦ㄥ浘涓垜浠殑Project Options(鍙充笅瑙掔殑閭d釜鐧界殑鍦版柟)鍙互鐪嬪埌 /Fp “debug/PCH.pch”錛岃繖灝辨槸鎸囧畾鐢熸垚鐨?pch鏂囦歡鐨勫悕瀛楋紝榛樿鐨勯氬父鏄<宸ョ▼鍚?gt;.pch錛堟垜鐨勭ず渚嬪伐紼嬪悕灝辨槸PCH錛夈?br><br>鐒跺悗錛屽湪宸﹁竟鐨勬爲(wèi)褰㈣鍥鵑噷閫夋嫨StdAfx.cpp.濡傚浘錛?br><br><img height=378 src="http://www.shnenglu.com/images/cppblog_com/guogangj/20090423_precompile_2.jpg" width=505 border=0><br>錛堝浘錛掞級(jí)<br><br>榪欐椂鍘熸潵鐨凱roject Option鍙樻垚浜?Source File Option錛堝師鏉ユ槸宸ョ▼錛岀幇鍦ㄦ槸涓涓枃浠訛紝褰撶劧鍙樹(shù)簡(jiǎn)錛夈傚湪榪欓噷鎴戜滑鍙互鐪嬪埌 /Yc寮鍏籌紝/Yc鐨勪綔鐢ㄥ氨鏄寚瀹氳繖涓枃浠舵潵鍒涘緩涓涓狿ch鏂囦歡銆?Yc鍚庨潰鐨勬枃浠跺悕鏄偅涓寘鍚簡(jiǎn)紼沖畾浠g爜鐨勫ご鏂囦歡錛屼竴涓伐紼嬮噷鍙兘鏈変竴涓枃浠剁殑鍙互鏈塝C寮鍏熾俈C灝辨牴鎹繖涓夐」鎶?StdAfx.cpp緙栬瘧鎴愪竴涓狾bj鏂囦歡鍜屼竴涓狿CH鏂囦歡銆?br><br>鐒跺悗鎴戜滑鍐嶉夋嫨涓涓叾瀹冪殑鏂囦歡鏉ョ湅鐪嬶紝濡傚浘錛?br><img height=400 src="http://www.shnenglu.com/images/cppblog_com/guogangj/20090423_precompile_3.jpg" width=566 border=0><br>錛堝浘3錛?br><br>鍦ㄨ繖閲岋紝Precomplier 閫夋嫨浜?Use ………涓欏癸紝澶存枃浠舵槸鎴戜滑鎸囧畾鍒涘緩PCH 鏂囦歡鐨剆tdafx.h鏂囦歡銆備簨瀹炰笂錛岃繖閲屾槸浣跨敤宸ョ▼閲岀殑璁劇疆錛岋紙濡傚浘1錛?Yu "stdafx.h"銆?br><br>榪欐牱錛屾垜浠氨璁劇疆濂戒簡(jiǎn)棰勭紪璇戝ご鏂囦歡銆備篃灝辨槸璇達(dá)紝鎴戜滑鍙互浣跨敤棰勭紪璇戝ご鍔熻兘浜?jiǎn)銆備互涓嬫槸娉ㄦ剰浜嬮」錛?br><br>1錛屽鏋滀嬌鐢ㄤ簡(jiǎn)/Yu錛屽氨鏄浣跨敤浜?jiǎn)棰劸~栬瘧錛屾垜浠湪姣忎釜.cpp鏂囦歡鐨勬渶寮澶達(dá)紝鎴戝己璋冧竴閬嶆槸鏈寮澶達(dá)紝鍖呭惈浣犳寚瀹氫駭鐢焢ch鏂囦歡鐨?h鏂囦歡錛堥粯璁ゆ槸stdafx.h錛変笉鐒跺氨浼?xì)鏈夐棶棰樸傚鏋滀綘娌℃湁鍖呭惈榪欎釜鏂囦歡錛屽氨鍛婅瘔浣燯nexpected file end. 濡傛灉浣犱笉鏄湪鏈寮澶村寘鍚殑錛屼綘鑷繁璇曚互涓嬪氨鐭ラ亾浜?jiǎn)锛尵l濆鏈夊緢鎯婁漢鐨勬晥鏋溿?br><br>2錛屽鏋滀綘鎶妏ch鏂囦歡涓嶅皬蹇?jī)涓簡(jiǎn)锛屾犚?guī)嵁浠ヤ笂鐨勫垎鏋愶紝浣犲彧瑕佽緙栬瘧鍣ㄧ敓鎴愪竴涓猵ch鏂囦歡灝卞彲浠ヤ簡(jiǎn)銆備篃灝辨槸璇存妸 stdafx.cpp錛堝嵆鎸囧畾/Yc鐨勯偅涓猚pp鏂囦歡錛夐噸鏂扮紪璇戜竴閬嶅氨鍙互浜?jiǎn)銆傚綋鐒朵綘鍙互鍌誨偦鐨?Rebuild all銆傜畝鍗曚竴鐐瑰氨鏄夋嫨閭d釜cpp鏂囦歡錛屾寜涓涓婥trl + F7灝卞彲浠ヤ簡(jiǎn)銆?/p> <img src ="http://www.shnenglu.com/guogangj/aggbug/80806.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/guogangj/" target="_blank">Jiang Guogang</a> 2009-04-23 10:01 <a href="http://www.shnenglu.com/guogangj/archive/2009/04/23/80806.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>銆怌SDN銆慦in32 GDI鍩虹錛堢瑪璁幫級(jí)http://www.shnenglu.com/guogangj/archive/2009/04/03/78844.htmlJiang GuogangJiang GuogangFri, 03 Apr 2009 11:02:00 GMThttp://www.shnenglu.com/guogangj/archive/2009/04/03/78844.htmlhttp://www.shnenglu.com/guogangj/comments/78844.htmlhttp://www.shnenglu.com/guogangj/archive/2009/04/03/78844.html#Feedback0http://www.shnenglu.com/guogangj/comments/commentRss/78844.htmlhttp://www.shnenglu.com/guogangj/services/trackbacks/78844.html銆?0060307鍙戣〃浜巄log.csdn.net錛?0090403閲嶇紪杈戙?/span>

1銆丟DI鍚嶅瓧鐨勬剰涔?br>GDI Graphic Device Interface錛屾垜璇翠笉娓呭拰GUI鏈変粈涔堝尯鍒傚彲鑳戒竴縐嶉拡瀵硅澶囷紝涓縐嶉拡瀵圭敤鎴瘋(gè)岃█鍚э紝鍙嶆浠ュ悗閮借GDI錛屼篃灝辨槸Windows鐨勫浘褰㈢紪紼嬨?br>
2銆佽澶囨弿榪頒笂涓嬫枃HDC
Handle Device Context
榪欎釜鏄叧閿殑鍏抽敭錛屽彲浠ョ悊瑙f垚鐢誨浘鐨勭幆澧冿紝浣曡皳鐜錛熺敾鏉匡紝綰革紝絎旓紝灝哄錛屽瓧浣擄紝棰滆壊錛屽尯鍩熺瓑銆傚弽姝e寘鎷綘鑳芥兂鍒扮殑鍜屾湭鑳芥兂鍒扮殑浜?jiǎn)銆傝鐢誨嚭涓嶅悓鐨勫浘褰紝寰堝ぇ紼嬪害涓婃槸瀵笻DC鐨勪慨鏀廣?br>
3銆丠DC鐨勫垱寤烘柟寮?br>WM_PAINT娑堟伅鏉ョ殑鏃跺欙紝鐢細(xì)

hdc = BeginPaint(hwnd, &ps);
//...
EndPaint(hwnd, &ps);

hdc = GetDC(hwnd);
//...
ReleaseDC(hwnd, hdc);

榪樻湁鍒殑鍔炴硶錛屼絾涓嶅父鐢紝榪欓噷鐣ヨ繃銆備笉榪囨湁涓涓繕鏄煎緱涓璇達(dá)紝閭e氨鏄彇寰梂indow HDC鐨勫姙娉曪紝鐢ㄥ畠鍙互鍦╓indows闈炲鎴峰尯鐢誨浘錛?/p>

hdcWindow = GetWindowDC(hwnd);
//...
ReleaseDC(hwnd, hdcWindow);

4銆佽幏鍙朒DC淇℃伅
GetDeviceCaps()
鍏朵腑姣旇緝閲嶈鐨勬寚鏍囨槸錛?br>HORZRES - horizontal resolution
VERTRES - vertical resolution
BITSPIXEL - 鑹叉繁

5銆佷繚瀛楬DC涓庤繕鍘烪DC

SaveDC(hdc);
RestoreDC(hdc, 
-1);

6銆佺敾鍥劇敾鍥撅紒

//[浼爜]

// ----- 鐐?nbsp;-----
//鐢葷偣
SetPixel(hdc, x, y, crColor);
//鍙栫偣棰滆壊
crColor = GetPixel(hdc, x, y);

// ----- 鐩寸嚎 -----
//鏈鍚庝竴鍙傛暟涓篘ULL琛ㄧず涓嶈繑鍥炴渶鍚庣偣
MoveToEx(hdc, x, y, lpPrevPoint);
//鐢葷嚎
LineTo(hdc, x, y);
//鐢誨綰匡紝涓嶇Щ鍔ㄥ綋鍓嶇偣
Polyline(hdc, lpPoint, cPointNum);
//鐢誨綰匡紝縐誨姩褰撳墠鐐?/span>
PolylineTo(hdc, lpPoint, cPointNum);
//鐢誨緇勫綰?/span>
PolyPolyline(hdc, lppt, lpNum, cCount);

//----- 鏇茬嚎 -----
//鐢繪き鍦嗙嚎
Arc();
//鐢繪瘮娉藉皵鏇茬嚎錛屼笉縐誨姩浣嗗墠鐐?/span>
PolyBezier();
//鐢繪瘮娉藉皵鏇茬嚎錛岀Щ鍔ㄥ綋鍓嶇偣
PolyBezierTo();

//----- 鍖哄煙 -----
//鐢葷煩褰?/span>
Rectangle();
//鐢繪き鍦?/span>
Ellipse();
//鐢誨甫鍦嗚鐨勭煩褰?/span>
RoundRect();
//鐢繪墖
Pie();
//鐢誨紦
Chord();

7銆佺敾絎擧PEN錛堟敼鍙樼嚎鏉★級(jí)
鏂規(guī)硶1錛?br>HPEN hPen = GetStockObject(ARGUMENTS);
ARGUMENTS涓猴細(xì)BLACK_PEN 榛戠瑪WHITE_PEN 鐧界瑪

HPEN hPen = SelectObject(hdc, GetStockObject(WHITE_PEN));
DelectObject(hPen);

DeleteObject(SelectObject(hdc, GetStockObject(BLACK_PEN)));

GetObject(hPen, sizeof(LOGPEN), (LPVOID)&logpen);

hPen = GetCurrentObject(hdc, OBJ_PEN);

8銆佽儗鏅ā寮?/span>
鏀瑰彉鑳屾櫙妯″紡錛屼篃灝辨槸鍒跺畾铏氱嚎闂撮棿闅欑殑濉厖闂?shù)簡(jiǎn)锛?xì)

SetBkColor(hdc, crColor);
SetBkMode(hdc, TRANSPARENT);
SetBkMode(hdc, OPAQUE);

9銆佸彔鍔犳ā寮?/span>

SetROP2(hdc, iDrawMode);
iDrawMode 
= GetROP2(hdc);

10銆佺敾鍒稨BRUSH錛堟敼鍙樺~鍏咃級(jí)
鐢誨埛鑳芥寚鏄庡尯鍩熷~鍏呮ā寮忋?br>鏂規(guī)硶1錛?/p>

HBRUSH hBrush = GetStockObject(GRAY_BRUSH);
SelectObject(hdc, hBrush);

HBRUSH hBrush = CreateSolidBrush(crColor);
HBRUSH hBrush 
= CreateHatchBrush(iHatchStyle, crColor);

11銆佸杈瑰艦濉厖妯″紡鍙?qiáng)鐢诲杈瑰?/span>

SetPolyFillMode(hdc, iMode); //iMode錛欰LTERNAME WINDING
Polygon();

12銆佸尯鍩烪RGN錛堢粯鐢昏寖鍥達(dá)級(jí)

HRGN hRgn = CreateRectRgn(x1, y1, x2, y2);
HRGN hRgn 
= CreateRectRgnIndirect(&rect);
HRGN hRgn 
= CreateEllipticRgn(x1, y1, x2, y2);
HRGN hRgn 
= CreateEllipticRgnIndirect(&rect);

CombineRgn(hDestRgn, hSrcRgn1, hSrcRgn2, iCombine); //iCombine: RGN_AND, RGN_OR, RGN_XOR, RGN_DIFF, RGN_COPY

FillRgn(); //濉厖鍖哄煙銆?/span>
FrameRgn(); //緇欏尯鍩熺敾杈廣?/span>
InvertRgn(); //鍙嶈漿鍖哄煙銆?/span>
HRGN hRgnPrev = SelectObject(hdc, hRgn); //灝嗗尯鍩熸斁緗叆HDC銆?/span>

InvalidateRgn(hRgn);
ValidateRgn(hRgn);


]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              亚洲综合日本| 亚洲视频图片小说| 日韩一级大片在线| 欧美日韩视频在线| 一区二区三区视频在线| 久久亚洲综合色一区二区三区| 国产精品美女主播| 亚洲电影av在线| 亚洲一级二级| 欧美一级夜夜爽| 亚洲国产精品va在线看黑人动漫 | 欧美在线观看网址综合| 狠狠久久亚洲欧美| 亚洲欧洲一区二区三区久久| 欧美日韩一级片在线观看| 欧美综合77777色婷婷| 久久躁日日躁aaaaxxxx| 在线中文字幕一区| 欧美在线免费一级片| 亚洲精品一区二区三区樱花| 亚洲视频欧洲视频| 亚洲激情专区| 亚洲在线第一页| 亚洲美女毛片| 久久精品亚洲一区| 亚洲线精品一区二区三区八戒| 欧美一级片一区| 一区二区三区四区国产精品| 午夜精品一区二区三区电影天堂 | 亚洲欧美日韩综合| 男男成人高潮片免费网站| 亚洲欧美国产一区二区三区| 鲁大师影院一区二区三区| 亚洲欧美一区二区原创| 欧美+亚洲+精品+三区| 久久九九99| 欧美午夜剧场| 91久久亚洲| 在线观看久久av| 午夜精品一区二区三区在线视| 日韩视频在线观看| 老色鬼久久亚洲一区二区 | 亚洲美女免费精品视频在线观看| 午夜精品福利一区二区三区av| 国产精品99久久久久久有的能看| 亚洲欧美日韩中文视频| 欧美xxx成人| 久久大香伊蕉在人线观看热2| 欧美精品激情在线观看| 麻豆91精品| 国产亚洲综合在线| 亚洲欧美在线高清| 亚洲欧美一区二区三区极速播放| 欧美人牲a欧美精品| 欧美激情精品久久久六区热门 | 蜜桃精品一区二区三区| 久久青草福利网站| 国产一区欧美日韩| 久久精品视频在线看| 久久亚洲不卡| 极品少妇一区二区三区| 久久精品论坛| 麻豆精品视频在线| 影音欧美亚洲| 免费精品视频| 亚洲精品国产精品国自产在线| 亚洲人线精品午夜| 欧美激情中文字幕一区二区 | 久久久久网址| 影音先锋中文字幕一区二区| 久久狠狠婷婷| 欧美成年人视频| 亚洲精品视频免费| 欧美精品久久久久久久免费观看| 亚洲激情午夜| 亚洲专区国产精品| 国产亚洲一级高清| 久久综合成人精品亚洲另类欧美| 欧美大胆人体视频| 一区二区三区www| 国产精品xvideos88| 欧美一区二区三区在线免费观看| 久久婷婷国产综合国色天香| 亚洲国产1区| 欧美视频不卡中文| 欧美诱惑福利视频| 欧美激情亚洲激情| 亚洲欧美日韩第一区| 狠狠色噜噜狠狠色综合久| 美女网站久久| 亚洲色诱最新| 欧美成人一区二区三区| 一区二区三区高清| 国产性做久久久久久| 欧美国产日韩在线| 亚洲综合精品自拍| 欧美激情精品久久久久久久变态| 亚洲一区久久| 亚洲国产一区二区三区在线播| 欧美日韩亚洲另类| 久久久精品一品道一区| 日韩一级精品视频在线观看| 久久久免费精品视频| 夜夜嗨av色综合久久久综合网| 国产女人精品视频| 欧美freesex8一10精品| 午夜精品短视频| 亚洲精品影院| 毛片av中文字幕一区二区| 宅男噜噜噜66一区二区66| 精品51国产黑色丝袜高跟鞋| 欧美午夜欧美| 欧美精品九九| 国产免费成人av| 久久av资源网| 亚洲精品美女在线| 国产亚洲欧美日韩一区二区| 欧美激情视频一区二区三区免费| 久久国产精品亚洲77777| 中文国产成人精品| 亚洲精品在线一区二区| 欧美电影资源| 久久亚洲风情| 久久国产精品网站| 午夜宅男欧美| 亚洲欧美激情精品一区二区| av成人动漫| 99国产精品久久久久久久成人热| 1000部国产精品成人观看| 国产一区二区三区久久精品| 国产精品高清网站| 欧美三级电影网| 欧美日韩国产va另类| 老牛嫩草一区二区三区日本| 久久精品色图| 久久青草欧美一区二区三区| 欧美在线影院| 久久精品一区二区| 久久婷婷丁香| 免费视频一区| 欧美激情精品久久久久久免费印度 | 亚洲成人直播| 在线精品视频一区二区| 亚洲高清免费| 亚洲三级免费| 亚洲午夜激情| 先锋影院在线亚洲| 久久精品夜色噜噜亚洲a∨| 久久久免费精品视频| 开心色5月久久精品| 免费日韩视频| 亚洲欧洲一区二区三区| 99国产精品国产精品毛片| 亚洲图片欧美午夜| 欧美一区二视频| 久久婷婷久久| 欧美日韩小视频| 国产拍揄自揄精品视频麻豆| 韩国精品主播一区二区在线观看| 伊人精品久久久久7777| 亚洲精选在线观看| 亚洲欧美精品在线| 久久精品在线免费观看| 欧美chengren| 日韩视频在线观看一区二区| 亚洲欧美日韩系列| 另类专区欧美制服同性| 欧美日韩国产影片| 国产一区二区精品久久| 亚洲激情成人在线| 中国日韩欧美久久久久久久久| 欧美伊人久久| 亚洲国产成人精品视频| 中文欧美日韩| 免费高清在线一区| 国产精品久久久久一区二区三区共 | 亚洲一区二区动漫| 久久久精品一区| 欧美日韩在线大尺度| 狠狠久久亚洲欧美| 亚洲视频在线观看视频| 欧美专区在线| 亚洲国产精品成人精品| 亚洲女爱视频在线| 欧美高清你懂得| 国产亚洲精品久久久久动| 99国产精品一区| 久久人人爽人人爽| 亚洲午夜av| 欧美另类视频| 亚洲大片免费看| 久久成人18免费观看| 亚洲精品麻豆| 国产欧美一区二区三区另类精品 | 日韩视频三区| 美女国内精品自产拍在线播放| 国产乱码精品| 亚洲一区二区在线| 亚洲九九爱视频| 久久综合亚州|