锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 濡備綍浣跨敤dump鏂囦歡 鎴戞渶榪戝湪寮鍙戜竴涓獁indows涓嬬殑紼嬪簭(win7/win8)錛屾湁涓浜沜ase涓嬩細crash錛屽鏋滃湪鑷繁寮鍙戞満鍣ㄤ笂璋冭瘯姣旇緝綆鍗曪細榪愯紼嬪簭錛岀劧鍚巚s attach鍒拌繘紼嬩笂鍗沖彲錛屼絾鏄湪姣忓彴QA鐨勬満鍣ㄤ笂瀹夎vs鏃朵笉鐜板疄鐨勶紝鍥犳鎴戜滑瑕佺敤鍒癲ump鏂囦歡銆?/p> 寰蔣緗戠珯鏈変竴綃囨枃绔犺榪板浣曞垱寤篸ump鏂囦歡錛?br /> http://support.microsoft.com/kb/931673 絎竴縐嶏細 閫氳繃浠誨姟綆$悊鍣?/strong>錛氳繖縐嶉傜敤鍦ㄧ▼搴忔寕浜?crash)鐨勬椂鍊欒繘紼嬭繕鏈鍑猴紝姣斿鎴戣繍琛岀▼搴忥紝鍑虹幇浜嗕笅闈㈢殑閿欙細 姝ゆ椂鎵撳紑浠誨姟綆$悊鍣紝鍙沖嚮鐩稿簲榪涚▼錛岀偣鍑?Create Dump File“錛?br /> 涓浼氬垱寤哄畬鎴愶細 鐒跺悗鎶婅繖涓狣MP鏂囦歡鎷峰埌寮鍙戞満鍣ㄤ笂錛岀敤VS鎵撳紑錛?浼氬嚭鐜頒笅闈㈢殑鐣岄潰錛岃鎯崇煡閬撳彂鐢熼敊璇椂鍊欑殑璋冪敤鏍堬紝闇瑕佽緗畇ymbol鐨勮礬寰勶紝鐐瑰嚮”Set Symbol Paths“錛?br /> 娉ㄦ剰榪欎釜pdb瑕佸搴斾簬crash鐨別xe錛屽惁鍒欒皟鐢ㄦ爤娌℃硶鏄劇ず錛?/p> 璁劇疆瀹屾垚鍚庯紝鐐瑰嚮”Debug with Native Only“ 浣犲氨鍙互鐪嬪埌璋冪敤鏍堜簡銆?/p> 絎簩縐嶏細 鏀規敞鍐岃〃 濡傛灉紼嬪簭crash鐨勬椂鍊欐病鏈夋韞﹀嚭鏉ワ紝鍙互閫氳繃鏀規敞鍐岃〃鐨勮緗鎿嶄綔緋葷粺鍦ㄧ▼搴廲rash鐨勬椂鍊欒嚜鍔ㄧ敓鎴恉ump錛屽茍鏀懼埌鐗瑰畾鐨勭洰褰曚笅 http://msdn.microsoft.com/en-us/library/bb787181%28v=VS.85%29.aspx 錛堝畬錛?/p> 浠婂ぉ鐪嬩功鍒氬垰鐪嬬殑錛屽氨璁板綍涓嬫潵鍚с傝繖鍙兘鏄佺敓甯歌皥浜嗭紝鏉冧笖浣滀負涓涓閱掔殑渚嬪瓙鍚с?/p> 澶у閮界煡閬揝TL鏈変袱涓潪甯擱噸瑕佺殑緇勬垚閮ㄥ垎錛屽鍣ㄥ拰綆楁硶銆?/p> 綆楁硶灝辨槸涓涓釜鐨勫嚱鏁幫紝閫氳繃榪唬鍣ㄥ拰瀹瑰櫒鍏寵仈鍦ㄤ竴璧鳳紝瀹屾垚涓浜涘伐浣溿?/p> 綆楁硶鍜屽鍣ㄧ殑鍒嗙涓虹▼搴忚璁℃彁渚涗簡寰堝ぇ鐨勭伒媧繪э紝浣嗘槸涔熷甫鏉ヤ簡涓浜涜礋闈㈡晥鏋滐紝涓嬮潰鎴戣鐨勮繖涓棶棰樺氨鏄竴涓緥瀛愩?/p> STL鐨勭畻娉曢噷鏈変竴涓猺emove鍑芥暟錛岃宭ist鑷韓涔熸湁涓涓猺emove鍑芥暟錛屽姛鑳介兘鏄竴鏍風殑錛岀Щ闄ゆ煇涓涓厓绱狅紝閭f垜浠簲璇ヤ嬌鐢ㄥ摢涓涓憿錛?/p> 鐪嬩竴涓嬩笅闈㈣繖孌電▼搴?/p> 杈撳嚭鏄粈涔堝憿錛?/p> 絎竴琛岃偗瀹氭槸6 5 4 3 2 1 0 0 1 2 3 4 5 6錛岄偅涔堢浜岃浼氳緭鍑轟粈涔堬紵 濡傛灉鏄病鏈変粩緇嗙湅榪嘢TL鐨勪漢鑲畾浼氳涓簉emove(number.begin(), numbers.end(), 3)浼氱Щ闄ゆ墍鏈夊間負3鐨勫厓绱犮傛墍浠ヨ緭鍑烘槸錛? 5 4 2 1 0 0 1 2 4 5 6銆?/p> 浣嗘槸錛屾垜浠湅涓涓嬪畠鐪熸鐨勮緭鍑猴細 6 5 4 2 1 0 0 1 2 4 5 6 5 6 浣犲彲鑳戒細闈炲父鎯婅錛屼負浠涔堟渶鍚庝細澶氬嚭5鍜?涓や釜鏁板憿錛?/p> 鎴戜滑鏉ヨ涓涓媟emove綆楁硶鐨勫師鐞嗐?/p> remove綆楁硶宸ヤ綔鏃?strong>騫朵笉鏄洿鎺ユ妸鍏冪礌鍒犻櫎錛岃屾槸鐢ㄥ悗闈㈢殑鍏冪礌鏇夸唬鍓嶉潰鐨勫厓绱?/strong>錛屼篃鍗蟲槸璇村鏋滄垜瀵?234榪欎釜搴忓垪remove 2錛岃繑鍥炵殑搴忓垪鏄?1344錛?琚鍒跺埌2鐨勪綅緗紝4琚鍒跺埌3鐨勪綅緗級銆?/p> 榪欐牱涓婇潰鐨勪緥瀛愬氨濂借В閲婁簡錛岄偅涓や釜3鐨勫厓绱犲茍娌℃湁琚Щ闄わ紝鑰屾槸鐢ㄥ悗闈㈢殑鍏冪礌瑕嗙洊浜嗗墠闈㈢殑鍏冪礌銆傚鍑虹殑閭d袱涓暟娌℃湁琚Щ闄ゆ帀鑰屽凡銆?/p> 閭d箞鎴戜滑搴旇濡備綍鐪熸瀹屾垚縐婚櫎鍛紵remove鍑芥暟浼氳繑鍥炰竴涓凱浠e櫒錛岄偅涓凱浠e櫒鏄繖涓簭鍒楃殑閫昏緫緇堢偣錛屼篃鍗蟲槸鎴戜唬鐮侀噷鐨別ndOfNumbers錛屽畠鎸囧悜鍊掓暟絎簩涓?涓娿?/p> 浜庢槸鎴戜滑瑕佸埄鐢╨ist鐨別rase鍑芥暟瀹屾垚鍏冪礌縐婚櫎 榪欐牱鎴戜滑灝卞畬鎴愪簡鎴戜滑鐨勫伐浣滐紝紼嶇◢鏈夌偣鏇叉姌…… 鍏跺疄鎴戜滑鍙互鎶婅繖涓ゆ鏀懼湪涓璧鳳紝姣斿濡傛灉鎴戞兂鎺ョ潃縐婚櫎鎵鏈夊間負2鐨勫厓绱?/p> 榪欐牱鎴戜滑灝卞彲浠ヤ竴姝ュ埌浣嶄簡銆?/p> 浣嗘槸榪欐牱濂戒箞錛?/p> 涓嶅ソ銆?/p> 澶у浼氬彂鐜幫紝remove鍑芥暟鐨勫師鐞嗘槸澶嶅埗鑰屼笉鏄寚閽堢殑縐誨姩錛堝洜涓哄嚱鏁版搷綰電殑鏄凱浠e櫒錛岃孋++鐨勮凱浠e櫒娌℃湁瀹氫箟鍒犻櫎鎿嶄綔錛夛紝榪欐牱浼氬甫鏉ヤ竴涓棶棰橈細鎴戜滑浣跨敤list鏄洜涓哄畠鐨勪慨鏀圭殑鏁堢巼闈炲父楂橈紝鏀瑰彉涓涓嬫寚閽堝氨鍙互浜嗐傝岃繖閲屾垜浠鍒朵簡鍏冪礌錛屽鏋滃湪vector涓紝鍙兘榪樻槸楂樻晥鐨勶紝鍥犱負vector鏃犺濡備綍閮借澶嶅埗錛岃屽浜巐ist灝變笉鏄姝や簡錛?strong>浼氭瀬搴﹂檷浣庢垜浠殑鏁堢巼銆?/strong> 閭f垜浠庝箞鍔炲憿錛?/p> 絳旀鏄嬌鐢╨ist鑷繁鐨剅emove鍑芥暟 鎴戜滑鍙互榪欐牱鍒犻櫎鎵鏈夊間負1鐨勫厓绱犮?/p> 涔熷嵆鏄錛屽鏋滆鍒犻櫎list涓殑鍏冪礌錛?strong>鎴戜滑搴旇浣跨敤list鐨剅emove鎴愬憳鍑芥暟錛岃屼笉鏄痳emove綆楁硶錛?/p> 灝忕粨 鎴戜滑閮界煡閬擄紝STL鏄竴涓晥鐜囥佸鐢ㄦс佺伒媧繪ф姌琛風殑浜х墿錛屽叾涓晥鐜囪嚦鍏抽噸瑕侊紝鎵浠TL宸茬粡紱佹浜嗕竴浜涙晥鐜囦綆鐨勬搷浣滐紙姣斿list鐨勯殢鏈鴻闂級錛岃岄紦鍔變綘鍘諱嬌鐢ㄥ叾瀹冪殑瀹瑰櫒銆?/p> 浣嗘槸錛?strong>鍦ㄧ畻娉曚腑錛屼負浜嗙伒媧繪э紝STL榪樻槸浼氱壓鐗蹭竴浜涗笢瑗?/strong>錛屾瘮濡傛垜浠繖涓緥瀛愩?/p> 涓漢瑙夊緱錛孲TL浣滀負C++鏍囧噯搴撶殑涓涓粍鎴愰儴鍒嗭紝鐗圭偣鍜孋++鏈韓涓妯′竴鏍鳳紝寮哄ぇ鑰屽鏉傦紝鏈変簺鍦版柟闅句互鐞嗚В錛屽緢澶氱粏鑺傞渶瑕佸涔犳敞鎰忥紝鎴戜滑瑕佸浼氶伩鍏嶉櫡鍏ユ煇浜涢櫡闃變箣涓紝姣斿榪欎釜渚嬪瓙灝辨槸涓涓晥鐜囬櫡闃便?/p> 鍏跺畠鏇村鐨勯櫡闃辨槸閿欒澶勭悊鏂歸潰鐨勶紝STL鏈韓騫舵病鏈夎瀹氳繃澶氱殑閿欒澶勭悊錛屽ぇ閮ㄥ垎鐨勯敊璇鐞嗛兘浜ょ粰浜嗘垜浠紝鐞嗙敱寰堢畝鍗曪細鎬ц兘鑷充笂錛屽鏋滀竴涓笢瑗胯嚜韜病鏈夐敊璇鏌ワ紝鎴戜滑鍙互鍖呰涓涓甫閿欒媯鏌ョ殑綾伙紱浣嗘槸濡傛灉榪欎釜涓滆タ鑷韓灝卞甫浜嗛敊璇鏌ワ紝閭d箞鎴戜滑灝辨病鏈変換浣曟柟娉曟彁鍗囧畠鐨勬晥鐜囦簡銆傝繖涔熸槸寰堝C鍜孋++搴撶殑璁捐鍘熷垯銆?/p> 鎵浠ワ紝寰堝鏃跺欙紝闇瑕佹垜浠繁鍏ョ粏鑺?/strong>錛岀劧鍚庡啀鍐沖畾鍒板簳鎬庝箞鍋氥傚洜涓篊++灝辨槸濡傛錛氭湁寰堝璺彲浠ヨ蛋錛岄渶瑕佹垜浠嚜宸遍夋嫨鏈濂界殑涓鏉¤礬銆?/p> 鐒跺悗錛屽彲浠ュ緱鍒伴噸瑕佺殑涓や釜鐩綍 plugin鐩綍鏄彁渚涘皢buffer 鏂囦歡瑙f瀽鎴恖ua 鐗堟湰鐨勭被搴擄紝 闇瑕乸ython 鏀寔銆? 濡傛灉宸茬粡緙栬瘧浜唃oogle 瀹樻柟鐨刾rotoc 閭d釜紼嬪簭錛?鍙渶瑕佸湪緋葷粺PATH鐜鍙橀噺鎬昏拷鍔爌lugin鐩綍灝卞ソ: 鍏堢‘瀹氳嚜宸辯殑quick-cocos2d-x lua鎵╁睍鐩綍錛? 榪欐槸鎴戠殑鐩綍緇撴瀯: 璺緞涓猴細 鐩墠鏄竴涓笉瓚?0琛岀殑灝忔枃浠訛紝 鎴戞墦綆楀叏閮ㄨ創榪涙潵錛? 鐩綍緇撴瀯搴旇鏄繖鏍風殑錛? 淇敼main.lua 鍦╮equire("appxxxxxx") 涓婇潰 錛?鍔犲叆涓嬮潰鐨勪唬鐮侊細 榪涘叆player-x qt婧愮爜鐩綍 錛? 浣跨敤qmake 鏂囦歡鎵цquick-x.pro 鏂囦歡 濡傛灉閿欒淇℃伅鐩稿悓錛?淇敼鏂囦歡: 鏌ユ壘琛? 涓存椂鍙樻洿涓猴細 鎬濊礬 鍍忔墍鏈夎璦涓鏍鳳紝緇戝畾鍥炶皟涓昏鏄墽琛岀殑浠誨姟鎵ц鍒扮壒瀹氭儏褰㈢殑鏃跺欙紝璋冪敤瀵圭敤鍥炶皟鏂規硶銆?鏈枃涔熶竴鏍鳳紝Lua娉ㄥ唽鍥炶皟鍒癈++鐨勬牳蹇冩濊礬鏄紝褰揅浠g爜鎵ц鍒扮壒瀹氱壒瀹氭儏褰㈢殑鏃跺欙紝璋冪敤Lua鐨勬柟娉曘?/p> 鎴戣繖閲屼嬌鐢ㄧ殑鏄敤lua_stack鐩存帴璋冪敤lua鐨勬柟娉曪紝娌℃湁浣跨敤Cocos2d-x灝佽鐨勯偅涓猟ispatcher錛屽洜涓虹啛鎮夐偅涓牸寮忓お澧ㄨ抗浜嗐?/p> 涓昏姝ラ濡備笅 緙撳瓨Lua鍑芥暟鍦↙ua鐜涓殑寮曠敤 鍦–浠g爜鐨勫湴鏂圭敤C鐨勬柟寮忚緗ソ鍥炶皟 鍦–浠g爜鍥炶皟鍑芥暟鎵ц鐨勬椂鍊欙紝璋冪敤lua鍑芥暟 瀹炵幇 C浠g爜緇戝畾鍥炶皟錛岃皟鐢↙ua鍑芥暟 鎻愪緵Lua鍑芥暟緇戝畾鍒癈鐨勬柟娉? 涓婅竟鐨勮繖涓嚱鏁扮洿鎺ョ敤cocos閲岀殑genbinding.py 鏄棤娉曟紜敓鎴怢ua閲屽彲璋冪敤鐨勬帴鍙g殑錛岄渶瑕佹墜鍔ㄧ紪鍐欑粦瀹氭柟娉? 璇磋繖涓緱鐢ㄥ埌Cocos2d-x涓彁渚涚殑涓涓柟娉曪細toluafix_ref_function浼氭妸涓涓狶ua鏍堜腑鐨勬柟娉曡漿鎴愪竴涓猧nt錛屼互渚緾++涓皟鐢ㄣ傛垜浼氬湪鏈鍚庨潰璇磋繖涓?/p> 灝嗙粦瀹氭柟娉曠粦瀹氬埌Lua鐜閲?/p> Lua閲岃緗洖璋冨埌C++ -嫻嬭瘯 鎵撳嵃鍥炶皟杈撳嚭錛屾祴璇曢氳繃 userdata 8 walk 鍏朵粬 toluafix_ref_function 浠ュ強 toluafix_get_function_by_refid 榪?涓や釜鏂規硶鏄浉浜掑搴旂殑 toluafix_ref_function榪欎釜鏂規硶鍦ㄦ敞鍐岃〃涓婂皢涓涓猯ua鐨刦unction涓庝竴涓猣unction_id鐢熸垚鏄犲皠 toluafix_get_function_by_refid 鏂規硶鍙互閫氳繃鍓嶄竴涓柟娉曠敓鎴愮殑function_id鏉ヨ緇戝畾鐨刲ua function鏀懼埌鏍堥《 executeFunctionByHandler executeFunctionByHandler 榪欎釜鏂規硶鍙槸閫氳繃toluafix_get_function_by_refid 鑾峰彇鍒癴unction鐒跺悗閫氳繃lua_pcall 鏂規硶璋冪敤錛屼唬鐮佸氨涓嶅啓浜嗐?/p>




鍏朵腑Value Data=1浠h〃鐨勫惈涔夋槸錛?p>
璁劇疆瀹屾垚鍚庯紝crash鍙戠敓鏃訛紝鎿嶄綔緋葷粺鐢熸垚dump錛岃礬寰勫湪%LOCALAPPDATA%\CrashDumps涓嬶紝璇︾粏鍙互鍙傝冿細
]]> 1 list<int> numbers; 2 3 for ( int number = 0; number <= 6; number ++ ) { 4 numbers.push_front(number); 5 numbers.push_back(number); 6 } 7 8 copy(numbers.begin(), numbers.end(), 9 ostream_iterator<int>(cout, " ")); 10 cout << endl; 11 12 // remove algorithm will remove element but not erase the element from container 13 // it will return the logical desination of container 14 list<int>::iterator endOfNumbers = remove(numbers.begin(), numbers.end(), 3); 15 16 copy(numbers.begin(), numbers.end(), 17 ostream_iterator<int>(cout, " ")); 18 cout << endl;
numbers.erase(endOfNumbers, numbers.end());
numbers.erase(remove(numbers.begin(), numbers.end(), 2), numbers.end());numbers.remove(1);
]]>
[鍑芥暟瀵硅薄鍙傛暟] (鎿嶄綔絎﹂噸杞藉嚱鏁板弬鏁? mutable鎴杄xception澹版槑 ->榪斿洖鍊肩被鍨?{鍑芥暟浣搣
鍙互鐪嬪埌錛孡ambda涓昏鍒嗕負浜斾釜閮ㄥ垎錛歔鍑芥暟瀵硅薄鍙傛暟]銆?鎿嶄綔絎﹂噸杞藉嚱鏁板弬鏁?銆乵utable鎴杄xception澹版槑銆?>榪斿洖鍊肩被鍨嬨亄鍑芥暟浣搣銆備笅闈㈠垎鍒繘琛屼粙緇嶃?br /> 涓銆乕鍑芥暟瀵硅薄鍙傛暟]錛屾爣璇嗕竴涓狶ambda鐨勫紑濮嬶紝榪欓儴鍒嗗繀欏誨瓨鍦紝涓嶈兘鐪佺暐銆傚嚱鏁板璞″弬鏁版槸浼犻掔粰緙栬瘧鍣ㄨ嚜鍔ㄧ敓鎴愮殑鍑芥暟瀵硅薄綾葷殑鏋勯犲嚱鏁扮殑銆傚嚱鏁板璞?鍙傛暟鍙兘浣跨敤閭d簺鍒板畾涔塋ambda涓烘鏃禠ambda鎵鍦ㄤ綔鐢ㄨ寖鍥村唴鍙鐨勫眬閮ㄥ彉閲忥紙鍖呮嫭Lambda鎵鍦ㄧ被鐨則his錛夈傚嚱鏁板璞″弬鏁版湁浠ヤ笅褰㈠紡錛?br /> 1銆佺┖銆傛病鏈変嬌鐢ㄤ換浣曞嚱鏁板璞″弬鏁般?br /> 2銆?銆傚嚱鏁頒綋鍐呭彲浠ヤ嬌鐢↙ambda鎵鍦ㄤ綔鐢ㄨ寖鍥村唴鎵鏈夊彲瑙佺殑灞閮ㄥ彉閲忥紙鍖呮嫭Lambda鎵鍦ㄧ被鐨則his錛夛紝騫朵笖鏄間紶閫掓柟寮忥紙鐩稿綋浜庣紪璇戝櫒鑷姩涓烘垜浠寜鍊間紶閫掍簡鎵鏈夊眬閮ㄥ彉閲忥級銆?br /> 3銆?amp;銆傚嚱鏁頒綋鍐呭彲浠ヤ嬌鐢↙ambda鎵鍦ㄤ綔鐢ㄨ寖鍥村唴鎵鏈夊彲瑙佺殑灞閮ㄥ彉閲忥紙鍖呮嫭Lambda鎵鍦ㄧ被鐨則his錛夛紝騫朵笖鏄紩鐢ㄤ紶閫掓柟寮忥紙鐩稿綋浜庣紪璇戝櫒鑷姩涓烘垜浠寜寮曠敤浼犻掍簡鎵鏈夊眬閮ㄥ彉閲忥級銆?br /> 4銆乼his銆傚嚱鏁頒綋鍐呭彲浠ヤ嬌鐢↙ambda鎵鍦ㄧ被涓殑鎴愬憳鍙橀噺銆?br /> 5銆乤銆傚皢a鎸夊艱繘琛屼紶閫掋傛寜鍊艱繘琛屼紶閫掓椂錛屽嚱鏁頒綋鍐呬笉鑳戒慨鏀逛紶閫掕繘鏉ョ殑a鐨勬嫹璐濓紝鍥犱負榛樿鎯呭喌涓嬪嚱鏁版槸const鐨勩傝淇敼浼犻掕繘鏉ョ殑a鐨勬嫹璐濓紝鍙互娣誨姞mutable淇グ絎︺?br /> 6銆?amp;a銆傚皢a鎸夊紩鐢ㄨ繘琛屼紶閫掋?br /> 7銆乤, &b銆傚皢a鎸夊艱繘琛屼紶閫掞紝b鎸夊紩鐢ㄨ繘琛屼紶閫掋?br /> 8銆?錛?amp;a, &b銆傞櫎a鍜宐鎸夊紩鐢ㄨ繘琛屼紶閫掑錛屽叾浠栧弬鏁伴兘鎸夊艱繘琛屼紶閫掋?br /> 9銆?amp;, a, b銆傞櫎a鍜宐鎸夊艱繘琛屼紶閫掑錛屽叾浠栧弬鏁伴兘鎸夊紩鐢ㄨ繘琛屼紶閫掋?br /> 浜屻?鎿嶄綔絎﹂噸杞藉嚱鏁板弬鏁?錛屾爣璇嗛噸杞界殑()鎿嶄綔絎︾殑鍙傛暟錛屾病鏈夊弬鏁版椂錛岃繖閮ㄥ垎鍙互鐪佺暐銆傚弬鏁板彲浠ラ氳繃鎸夊鹼紙濡傦細(a,b)錛夊拰鎸夊紩鐢紙濡傦細(&a,&b)錛変袱縐嶆柟寮忚繘琛屼紶閫掋?br /> 涓夈乵utable鎴杄xception澹版槑錛岃繖閮ㄥ垎鍙互鐪佺暐銆傛寜鍊間紶閫掑嚱鏁板璞″弬鏁版椂錛屽姞涓妋utable淇グ絎﹀悗錛屽彲浠ヤ慨鏀規寜鍊間紶閫掕繘鏉ョ殑鎷瘋礉錛堟敞鎰?鏄兘淇敼鎷瘋礉錛岃屼笉鏄兼湰韜級銆俥xception澹版槑鐢ㄤ簬鎸囧畾鍑芥暟鎶涘嚭鐨勫紓甯革紝濡傛姏鍑烘暣鏁扮被鍨嬬殑寮傚父錛屽彲浠ヤ嬌鐢╰hrow(int)銆?br /> 鍥涖?>榪斿洖鍊肩被鍨嬶紝鏍囪瘑鍑芥暟榪斿洖鍊肩殑綾誨瀷錛屽綋榪斿洖鍊間負void錛屾垨鑰呭嚱鏁頒綋涓彧鏈変竴澶剅eturn鐨勫湴鏂癸紙姝ゆ椂緙栬瘧鍣ㄥ彲浠ヨ嚜鍔ㄦ帹鏂嚭榪斿洖鍊肩被鍨嬶級鏃訛紝榪欓儴鍒嗗彲浠ョ渷鐣ャ?br /> 浜斻亄鍑芥暟浣搣錛屾爣璇嗗嚱鏁扮殑瀹炵幇錛岃繖閮ㄥ垎涓嶈兘鐪佺暐錛屼絾鍑芥暟浣撳彲浠ヤ負絀恒?br /> 涓嬮潰緇欏嚭浜嗕竴孌電ず渚嬩唬鐮侊紝鐢ㄤ簬婕旂ず涓婅堪鎻愬埌鐨勫悇縐嶆儏鍐碉紝浠g爜涓湁綆鍗曠殑娉ㄩ噴鍙綔涓哄弬鑰冦?
{
public:
CTest() : m_nData(20) { NULL; }
void TestLambda()
{
vector<int> vctTemp;
vctTemp.push_back(1);
vctTemp.push_back(2);
// 鏃犲嚱鏁板璞″弬鏁幫紝杈撳嚭錛? 2
{
for_each(vctTemp.begin(), vctTemp.end(), [](int v){ cout << v << endl; });
}
// 浠ュ兼柟寮忎紶閫掍綔鐢ㄥ煙鍐呮墍鏈夊彲瑙佺殑灞閮ㄥ彉閲忥紙鍖呮嫭this錛夛紝杈撳嚭錛?1 12
{
int a = 10;
for_each(vctTemp.begin(), vctTemp.end(), [=](int v){ cout << v+a << endl; });
}
// 浠ュ紩鐢ㄦ柟寮忎紶閫掍綔鐢ㄥ煙鍐呮墍鏈夊彲瑙佺殑灞閮ㄥ彉閲忥紙鍖呮嫭this錛夛紝杈撳嚭錛?1 13 12
{
int a = 10;
for_each(vctTemp.begin(), vctTemp.end(), [&](int v)mutable{ cout << v+a << endl; a++; });
cout << a << endl;
}
// 浠ュ兼柟寮忎紶閫掑眬閮ㄥ彉閲廰錛岃緭鍑猴細11 13 10
{
int a = 10;
for_each(vctTemp.begin(), vctTemp.end(), [a](int v)mutable{ cout << v+a << endl; a++; });
cout << a << endl;
}
// 浠ュ紩鐢ㄦ柟寮忎紶閫掑眬閮ㄥ彉閲廰錛岃緭鍑猴細11 13 12
{
int a = 10;
for_each(vctTemp.begin(), vctTemp.end(), [&a](int v){ cout << v+a << endl; a++; });
cout << a << endl;
}
// 浼犻抰his錛岃緭鍑猴細21 22
{
for_each(vctTemp.begin(), vctTemp.end(), [this](int v){ cout << v+m_nData << endl; });
}
// 闄鎸夊紩鐢ㄤ紶閫掑錛屽叾浠栧潎鎸夊間紶閫掞紝杈撳嚭錛?1 12 17
{
int a = 10;
int b = 15;
for_each(vctTemp.begin(), vctTemp.end(), [=, &b](int v){ cout << v+a << endl; b++; });
cout << b << endl;
}
// 鎿嶄綔絎﹂噸杞藉嚱鏁板弬鏁版寜寮曠敤浼犻掞紝杈撳嚭錛? 3
{
for_each(vctTemp.begin(), vctTemp.end(), [](int &v){ v++; });
for_each(vctTemp.begin(), vctTemp.end(), [](int v){ cout << v << endl; });
}
// 絀虹殑Lambda琛ㄨ揪寮?/span>
{
[](){}();
[]{}();
}
}
private:
int m_nData;
};
]]>
]]>
protoc-gen-lua涓嬭澆鍦板潃: https://github.com/sean-lin/protoc-gen-lua
1/ 鍏堝埌protobuf鐨刾ython鐩綍涓嬫墽琛?br /> python setup.py build
python setup.py install
2/ 鍦╬rotoc-gen-lua鐨刾lugin鐩綍涓柊寤簆rotoc-gen-lua.bat, 鍐呭濡備笅:
@python 鐩綍\protoc-gen-lua\plugin\protoc-gen-lua
3/ 鐢╬rotoc鎶妏roto鏂囦歡鐢熸垚lua鏂囦歡
protoc --lua_out=./ --plugin=protoc-gen-lua="鐩綍\protoc-gen-lua.bat" test.proto
4/ 灝唒rotoc-gen-lua/protobuf涓嬬殑pb.c 鏀懼埌宸ョ▼鐨凜lasses涓? 騫跺姞鍏ュ埌c++宸ョ▼涓?br />
5/ 灝唒rotoc-gen-lua/protobuf涓婄殑鎵鏈塴ua鏂囦歡鏀懼埌宸ョ▼鐨剆rc鐩綍(lua鐩綍)涓?br />
6/ AppDelegate.cpp 娣誨姞浠g爜
extern "C"{
int luaopen_pb(lua_State* L);
}
鍦╝pplicationDidFinishLaunching()涓皟鐢?luaopen_pb(state);
---------------------------------------------------------------------------
local msg = person_pb.Person()
msg.id = 100
msg.name = "foo"
msg.email = "bar"
local pb_data = msg:SerializeToString() -- Parse Example
print("create:", msg.id, msg.name, msg.email, pb_data)
local msg = person_pb.Person()
msg:ParseFromString(pb_data)
print("parser:", msg.id, msg.name, msg.email, pb_data)
---------------------------------------------------------------------------
縐繪鍒癮ndroid 璁板緱灝唒b.c娣誨姞鍒皃roj.android\jni\Android.mk涓?br />
]]>
1>e:\test003\test101\src\pb.c : warning C4819: 璇ユ枃浠跺寘鍚笉鑳藉湪褰撳墠浠g爜欏?936)涓〃紺虹殑瀛楃銆傝灝嗚鏂囦歡淇濆瓨涓?nbsp;Unicode 鏍煎紡浠ラ槻姝㈡暟鎹涪澶?br /> 1>c:\program files (x86)\microsoft visual studio 12.0\vc\include\cstdlib(18): error C2054: 鍦?#8220;using”涔嬪悗搴旇緭鍏?#8220;(”
1>c:\program files (x86)\microsoft visual studio 12.0\vc\include\cstdlib(18): error C2061: 璇硶閿欒: 鏍囪瘑絎?#8220;using”
1>c:\program files (x86)\microsoft visual studio 12.0\vc\include\cstdlib(19): error C2061: 璇硶閿欒: 鏍囪瘑絎?#8220;using”
1>c:\program files (x86)\microsoft visual studio 12.0\vc\include\cstdlib(19): error C2061: 璇硶閿欒: 鏍囪瘑絎?#8220;abs”
1>c:\program files (x86)\microsoft visual studio 12.0\vc\include\cstdlib(19): error C2059: 璇硶閿欒:“;”
1>c:\program files (x86)\microsoft visual studio 12.0\vc\include\cstdlib(19): error C2061: 璇硶閿欒: 鏍囪瘑絎?#8220;atexit”
1>c:\program files (x86)\microsoft visual studio 12.0\vc\include\cstdlib(20): error C2061: 璇硶閿欒: 鏍囪瘑絎?#8220;atof”
1>c:\program files (x86)\microsoft visual studio 12.0\vc\include\cstdlib(20): error C2059: 璇硶閿欒:“;”
1>c:\program files (x86)\microsoft visual studio 12.0\vc\include\cstdlib(20): error C2061: 璇硶閿欒: 鏍囪瘑絎?#8220;atoi”
1>c:\program files (x86)\microsoft visual studio 12.0\vc\include\cstdlib(20): error C2061: 璇硶閿欒: 鏍囪瘑絎?#8220;atol”
1>c:\program files (x86)\microsoft visual studio 12.0\vc\include\cstdlib(21): error C2061: 璇硶閿欒: 鏍囪瘑絎?#8220;bsearch”
1>c:\program files (x86)\microsoft visual studio 12.0\vc\include\cstdlib(21): error C2059: 璇硶閿欒:“;”
1>c:\program files (x86)\microsoft visual studio 12.0\vc\include\cstdlib(21): error C2061: 璇硶閿欒: 鏍囪瘑絎?#8220;calloc”
1>c:\program files (x86)\microsoft visual studio 12.0\vc\include\cstdlib(21): error C2061: 璇硶閿欒: 鏍囪瘑絎?#8220;div”
1>c:\program files (x86)\microsoft visual studio 12.0\vc\include\cstdlib(22): error C2061: 璇硶閿欒: 鏍囪瘑絎?#8220;exit”
1>c:\program files (x86)\microsoft visual studio 12.0\vc\include\cstdlib(22): error C2059: 璇硶閿欒:“;”
1>c:\program files (x86)\microsoft visual studio 12.0\vc\include\cstdlib(22): error C2061: 璇硶閿欒: 鏍囪瘑絎?#8220;free”
1>c:\program files (x86)\microsoft visual studio 12.0\vc\include\cstdlib(23): error C2061: 璇硶閿欒: 鏍囪瘑絎?#8220;labs”
1>c:\program files (x86)\microsoft visual studio 12.0\vc\include\cstdlib(23): error C2059: 璇硶閿欒:“;”
1>c:\program files (x86)\microsoft visual studio 12.0\vc\include\cstdlib(23): error C2061: 璇硶閿欒: 鏍囪瘑絎?#8220;ldiv”
1>c:\program files (x86)\microsoft visual studio 12.0\vc\include\cstdlib(23): error C2061: 璇硶閿欒: 鏍囪瘑絎?#8220;malloc”
1>c:\program files (x86)\microsoft visual studio 12.0\vc\include\cstdlib(24): error C2061: 璇硶閿欒: 鏍囪瘑絎?#8220;mblen”
1>c:\program files (x86)\microsoft visual studio 12.0\vc\include\cstdlib(24): error C2059: 璇硶閿欒:“;”
1>c:\program files (x86)\microsoft visual studio 12.0\vc\include\cstdlib(24): error C2061: 璇硶閿欒: 鏍囪瘑絎?#8220;mbstowcs”
1>c:\program files (x86)\microsoft visual studio 12.0\vc\include\cstdlib(24): error C2061: 璇硶閿欒: 鏍囪瘑絎?#8220;mbtowc”
1>c:\program files (x86)\microsoft visual studio 12.0\vc\include\cstdlib(25): error C2061: 璇硶閿欒: 鏍囪瘑絎?#8220;qsort”
1>c:\program files (x86)\microsoft visual studio 12.0\vc\include\cstdlib(25): error C2059: 璇硶閿欒:“;”
1>c:\program files (x86)\microsoft visual studio 12.0\vc\include\cstdlib(25): error C2061: 璇硶閿欒: 鏍囪瘑絎?#8220;rand”
1>c:\program files (x86)\microsoft visual studio 12.0\vc\include\cstdlib(25): error C2061: 璇硶閿欒: 鏍囪瘑絎?#8220;realloc”
1>c:\program files (x86)\microsoft visual studio 12.0\vc\include\cstdlib(26): error C2061: 璇硶閿欒: 鏍囪瘑絎?#8220;srand”
1>c:\program files (x86)\microsoft visual studio 12.0\vc\include\cstdlib(26): error C2059: 璇硶閿欒:“;”
1>c:\program files (x86)\microsoft visual studio 12.0\vc\include\cstdlib(26): error C2061: 璇硶閿欒: 鏍囪瘑絎?#8220;strtod”
1>c:\program files (x86)\microsoft visual studio 12.0\vc\include\cstdlib(26): error C2061: 璇硶閿欒: 鏍囪瘑絎?#8220;strtol”
1>c:\program files (x86)\microsoft visual studio 12.0\vc\include\cstdlib(27): error C2061: 璇硶閿欒: 鏍囪瘑絎?#8220;strtoul”
1>c:\program files (x86)\microsoft visual studio 12.0\vc\include\cstdlib(27): error C2059: 璇硶閿欒:“;”
1>c:\program files (x86)\microsoft visual studio 12.0\vc\include\cstdlib(28): error C2061: 璇硶閿欒: 鏍囪瘑絎?#8220;wcstombs”
1>c:\program files (x86)\microsoft visual studio 12.0\vc\include\cstdlib(28): error C2059: 璇硶閿欒:“;”
1>c:\program files (x86)\microsoft visual studio 12.0\vc\include\cstdlib(28): error C2061: 璇硶閿欒: 鏍囪瘑絎?#8220;wctomb”
1>c:\program files (x86)\microsoft visual studio 12.0\vc\include\cstdlib(30): error C2054: 鍦?#8220;using”涔嬪悗搴旇緭鍏?#8220;(”
1>c:\program files (x86)\microsoft visual studio 12.0\vc\include\cstdlib(33): error C2061: 璇硶閿欒: 鏍囪瘑絎?#8220;using”
1>c:\program files (x86)\microsoft visual studio 12.0\vc\include\cstdlib(34): error C2061: 璇硶閿欒: 鏍囪瘑絎?#8220;system”
1>c:\program files (x86)\microsoft visual studio 12.0\vc\include\cstdlib(34): error C2059: 璇硶閿欒:“;”
1>c:\program files (x86)\microsoft visual studio 12.0\vc\include\cstdlib(37): error C2061: 璇硶閿欒: 鏍囪瘑絎?#8220;atoll”
1>c:\program files (x86)\microsoft visual studio 12.0\vc\include\cstdlib(37): error C2059: 璇硶閿欒:“;”
瑙e喅鏂規硶:
]]>璇ラ敊璇槸鍥犱負褰撻」鐩腑娣峰悎浜?.cpp 鍜?.c 鏂囦歡鏃訛紝緙栬瘧鍣ㄤ細瀵瑰畠浠噰鍙栦笉鍚岀殑緙栬瘧鏂瑰紡錛堜富瑕佹槸鍥犱負瀵瑰嚱鏁板0鏄庣殑澶勭悊鏂瑰紡涓嶅悓錛夛紝
鍥犺屼笉鑳藉叡鐢ㄤ竴涓緙栬瘧澶存枃浠躲傚湪 VC++ 涓紝榛樿鐨勯緙栬瘧澶存枃浠舵槸閽堝 C++ 鐨?(stdafx.h 鍜?stdafx.cpp錛夛紝褰撶劧涔熷彲浠ュ垱寤洪拡瀵?C 鐨勯緙栬瘧澶淬?br />
鏂規硶錛氬皢灝戞暟鐨勪笉鍚岀被鏂囦歡璁句負涓嶄嬌鐢ㄩ緙栬瘧澶存槸姣旇緝騫寵 鐨勫仛娉曪紝鏂規硶鏄細瀵逛簬 VC++6.0錛屽湪 FileView 閲屽瑕佸彇娑堥緙栬瘧澶寸殑 .c (鎴?.cpp) 鏂囦歡鐐瑰彸閿紝
閫夋嫨 settings錛屽湪寮瑰嚭鐨勫璇濇鍙寵竟閫夋嫨 category 涓?precompiled headers錛屽啀璁劇疆閫夐」涓?not using ...錛?br />錛堝浜?VS2005錛屽垯鍦?solution explorer 涓鐩稿簲鏂囦歡鐐瑰彸閿夋嫨 properties錛屽湪 precompiled headers 欏逛笅璁劇疆 not using... 鍗沖彲銆傚鏋滈渶瑕佽緗涓枃浠訛紝
鍒欏彲浠ユ寜浣?Ctrl 閿啀鍚屾椂閫変腑榪欎簺鏂囦歡騫惰緗級
PS錛氳В閲婂涓嬬偣鍑婚」鐩?鐐瑰嚮灞炴?鐒跺悗閫夋嫨C/C++ 棰勭紪璇戝ご 鍒涘緩浣跨敤澶存枃浠?涓嶄嬌鐢ㄩ緙栬瘧澶存枃浠?br />錛堣В鍐蟲柟妗堣祫婧愮鐞嗗櫒-鍙沖嚮闇瑕佹帓闄ょ殑c鎴朿pp鏂囦歡]-寮瑰嚭灞炴ц彍鍗?灞曞紑C/C++-棰勭紪璇戝ご-鍒涘緩/浣跨敤棰勭紪璇戝ご-閫夋嫨涓嶉傜敤棰勭紪璇戝ご錛?/pre>
]]>
琛ㄨ揪寮忛潪娉曪紝榪欎釜閿欒鏄敱浜巆鐨勭紪璇戝櫒瑕佹眰灝嗗彉閲忕殑鐢蟲槑鏀懼湪涓涓嚱鏁板潡鐨勫ご閮紝鑰宑++娌℃湁榪欐牱鐨勮姹傞犳垚鐨勩?br />
瑙e喅鐨勫姙娉曞氨鏄妸鍙橀噺鐨勭敵鏄庡叏閮ㄦ斁鍦ㄥ彉閲忕殑鐢熷瓨鍧楃殑寮濮嬨?/div>
]]>protoc-gen-lua/plugin/ protoc-gen-lua/protobuf/export PATH={protoc-gen-lua DIR }/plugin:$PATH/quick-cocos2d-x/lib/cocos2d-x/scripting/lua/lua_extensions/./quick-cocos2d-x/lib/cocos2d-x/scripting/lua/lua_extensions/protobuf/pb.c./quick-cocos2d-x/lib/cocos2d-x/scripting/lua/lua_extensions/lua_extensions.c#include "lua_extensions.h" #if __cplusplus extern "C" { #endif // cjson #include "cjson/lua_cjson.h" // zlib #include "zlib/lua_zlib.h" // lpack #include "lpack/lpack.h" // socket #include "socket/luasocket.h" #include "socket/mime.h" #include "socket/socket_scripts.h" // filesystem #include "filesystem/lfs.h" // lsqlite3 #include "lsqlite3/lsqlite3.h" #include "protobuf/pb.c" //寮曠敤protobuf 搴撴枃浠?nbsp; static luaL_Reg luax_exts[] = { {"cjson", luaopen_cjson_safe}, {"zlib", luaopen_zlib}, {"pack", luaopen_pack}, {"socket.core", luaopen_socket_core}, {"mime.core", luaopen_mime_core}, {"lfs", luaopen_lfs}, {"lsqlite3", luaopen_lsqlite3}, {NULL, NULL} }; void luaopen_lua_extensions(lua_State *L) { // load extensions luaL_Reg* lib = luax_exts; lua_getglobal(L, "package"); lua_getfield(L, -1, "preload"); for (; lib->func; lib++) { lua_pushcfunction(L, lib->func); lua_setfield(L, -2, lib->name); } lua_pop(L, 2); // load extensions script luaopen_socket_scripts(L); luaopen_pb(L); //榪欐槸鍔犲叆鐨刾rotobuf 鎵╁睍娉ㄥ唽鍚?nbsp; } #if __cplusplus } // extern "C" #endif[PROJECT]/scripts/protobuf/*.luapackage.path = package.path .. ";./protobuf/?.lua;./scripts/protobuf/?.lua;"cd quick-cocos2d-x/player/proj.qtqmake ./quick-x.pro./quick-cocos2d-x/lib/cocos2d-x/scripting/lua/lua_extensions/protobuf/pb.c#include <endian.h>#include <machine/endian.h>
]]>void ArmatureNode::registerMovementEventHandler(int handler){ unregisterMovementEventHandler(); //縐婚櫎涔嬪墠娉ㄥ唽鐨勭洃鍚?/code> _movementHandler = handler; //緙撳瓨lua鍑芥暟鐨勫紩鐢?nbsp;榪欎釜鍚庤竟璇?/code> auto dispatcher = getCCEventDispatcher(); auto f = [this](cocos2d::EventCustom *event) //娉ㄥ唽c浠g爜褰㈠紡鐨勫洖璋?nbsp;榪欓噷鐢╢unction鍋?/code> { auto eventData = (dragonBones::EventData*)(event->getUserData()); auto type = (int) eventData->getType(); auto movementId = eventData->animationState->name; auto lastState = eventData->armature->getAnimation()->getLastAnimationState(); auto stack = cocos2d::LuaEngine::getInstance()->getLuaStack(); stack->pushObject(this, "db.ArmatureNode"); stack->pushInt(type); stack->pushString(movementId.c_str(), movementId.size()); //閫氳繃LuaStack璋冪敤lua閲岀殑鍑芥暟 鏈鍚庝竴涓弬鏁拌緗弬鏁頒釜鏁?/code> stack->executeFunctionByHandler(_movementHandler, 3); }; dispatcher->addCustomEventListener(dragonBones::EventData::COMPLETE, f);}void ArmatureNode::unregisterMovementEventHandler(void){ if (0 != _movementHandler) { cocos2d::LuaEngine::getInstance()->removeScriptHandler(_movementHandler); //縐婚櫎lua鍑芥暟鐨勭粦瀹?/code> _movementHandler = 0; }}int tolua_db_DBCCArmature_registerMovementEventHandler(lua_State* tolua_S){ if (NULL == tolua_S) return 0; int argc = 0; dragonBones::ArmatureNode* self = nullptr; self = static_cast<dragonBones::ArmatureNode*>(tolua_tousertype(tolua_S,1,0)); //絎竴涓弬鏁?nbsp;灝辨槸lua閲岀殑self argc = lua_gettop(tolua_S) - 1; if (1 == argc) { //絎簩涓弬鏁幫紝灝辨槸Lua閲岀殑function 榪欓噷瑕侀氳繃toluafix_ref_function榪欎釜鍑芥暟鏄犲皠鎴愪竴涓狪nt鍊?/code> int handler = (toluafix_ref_function(tolua_S,2,0)); self->registerMovementEventHandler(handler); return 0; } return 0;}int extends_ArmatureNode(lua_State* tolua_S){ lua_pushstring(tolua_S, "db.ArmatureNode");//涔嬪墠db.ArmatureNode鏄氳繃鑴氭湰緇戝畾鍦╨ua閲屻傝繖閲屽彧鍋氭墿灞?/code> lua_rawget(tolua_S, LUA_REGISTRYINDEX); if (lua_istable(tolua_S,-1)) { lua_pushstring(tolua_S,"registerMovementEventHandler"); lua_pushcfunction(tolua_S,tolua_db_DBCCArmature_registerMovementEventHandler); lua_rawset(tolua_S,-3); } lua_pop(tolua_S, 1); return 0;} local arm = db.ArmatureNode:create("Dragon") local animation = arm:getAnimation() animation:gotoAndPlay("walk") arm:registerMovementEventHandler( function(...) print(...) end )//TOLUA_API int toluafix_ref_function(lua_State* L, int lo, int def){ if (!lua_isfunction(L, lo)) return 0; s_function_ref_id++; //function_id 鍔? lua_pushstring(L, TOLUA_REFID_FUNCTION_MAPPING);//鍦ㄦ敞鍐岃〃涓婏紝瀛樻斁luafunction 鏄犲皠table 鐨刱ey鍘嬫爤 lua_rawget(L, LUA_REGISTRYINDEX); //鑾峰彇鏂規硶鏄犲皠琛紝鏀懼湪鏍堥《 lua_pushinteger(L, s_function_ref_id); //function_id鍘嬫爤 lua_pushvalue(L, lo); //lo鏈夋晥澶勭儲寮曞鏄痩ua鏂規硶錛宭ua鏂規硶鎷瘋礉錛屽帇鏍?/code> lua_rawset(L, -3); //鐢熸垚鏄犲皠 lua_pop(L, 1); return s_function_ref_id;}TOLUA_API void toluafix_get_function_by_refid(lua_State* L, int refid){ lua_pushstring(L, TOLUA_REFID_FUNCTION_MAPPING); //瀛樻斁luafunction 鏄犲皠table 鐨刱ey鍘嬫爤 lua_rawget(L, LUA_REGISTRYINDEX); //鑾峰彇鏂規硶鏄犲皠琛紝鏀懼湪鏍堥《 lua_pushinteger(L, refid); //function_id鍘嬫爤 lua_rawget(L, -2); //鑾峰彇鍒扮殑luafunction 鏀懼埌鏍堥《 lua_remove(L, -2); //}
]]>