锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
1銆乢_stdcall璋冪敤綰﹀畾鐩稿綋浜?6浣嶅姩鎬佸簱涓粡甯鎬嬌鐢ㄧ殑PASCAL璋冪敤綰﹀畾銆傚湪32浣嶇殑VC++5.0涓?br>PASCAL璋冪敤綰﹀畾涓嶅啀琚敮鎸侊紙瀹為檯涓婂畠宸茶瀹氫箟涓篲_stdcall銆傞櫎浜哶_pascal澶栵紝__fortran鍜?br>__syscall涔熶笉琚敮鎸侊級錛屽彇鑰屼唬涔嬬殑鏄痏_stdcall璋冪敤綰﹀畾銆備袱鑰呭疄璐ㄤ笂鏄竴鑷寸殑錛屽嵆鍑芥暟鐨勫弬鏁拌嚜
鍙沖悜宸﹂氳繃鏍堜紶閫掞紝琚皟鐢ㄧ殑鍑芥暟鍦ㄨ繑鍥炲墠娓呯悊浼犻佸弬鏁扮殑鍐呭瓨鏍堬紝浣嗕笉鍚岀殑鏄嚱鏁板悕鐨勪慨楗伴儴鍒?br>錛堝叧浜庡嚱鏁板悕鐨勪慨楗伴儴鍒嗗湪鍚庨潰灝嗚緇嗚鏄庯級銆?br>_stdcall鏄疨ascal紼嬪簭鐨勭己鐪佽皟鐢ㄦ柟寮忥紝閫氬父鐢ㄤ簬Win32 Api涓紝鍑芥暟閲囩敤浠庡彸鍒板乏鐨勫帇鏍堟柟寮忥紝鑷?br>宸卞湪閫鍑烘椂娓呯┖鍫嗘爤銆俈C灝嗗嚱鏁扮紪璇戝悗浼氬湪鍑芥暟鍚嶅墠闈㈠姞涓婁笅鍒掔嚎鍓嶇紑錛屽湪鍑芥暟鍚嶅悗鍔犱笂"@"鍜屽弬鏁?br>鐨勫瓧鑺傛暟銆?br>2銆丆璋冪敤綰﹀畾錛堝嵆鐢╛_cdecl鍏抽敭瀛楄鏄庯級鎸変粠鍙寵嚦宸︾殑欏哄簭鍘嬪弬鏁板叆鏍堬紝鐢辮皟鐢ㄨ呮妸鍙傛暟寮瑰嚭鏍堛?br>瀵逛簬浼犻佸弬鏁扮殑鍐呭瓨鏍堟槸鐢辮皟鐢ㄨ呮潵緇存姢鐨勶紙姝e洜涓哄姝わ紝瀹炵幇鍙彉鍙傛暟鐨勫嚱鏁板彧鑳戒嬌鐢ㄨ璋冪敤綰?br>瀹氾級銆傚彟澶栵紝鍦ㄥ嚱鏁板悕淇グ綰﹀畾鏂歸潰涔熸湁鎵涓嶅悓銆?br>_cdecl鏄疌鍜孋錛嬶紜紼嬪簭鐨勭己鐪佽皟鐢ㄦ柟寮忋傛瘡涓涓皟鐢ㄥ畠鐨勫嚱鏁伴兘鍖呭惈娓呯┖鍫嗘爤鐨勪唬鐮侊紝鎵浠ヤ駭鐢熺殑
鍙墽琛屾枃浠跺ぇ灝忎細姣旇皟鐢╛stdcall鍑芥暟鐨勫ぇ銆傚嚱鏁伴噰鐢ㄤ粠鍙沖埌宸︾殑鍘嬫爤鏂瑰紡銆俈C灝嗗嚱鏁扮紪璇戝悗浼氬湪鍑?br>鏁板悕鍓嶉潰鍔犱笂涓嬪垝綰垮墠緙銆傛槸MFC緙虹渷璋冪敤綰﹀畾銆?br>3銆乢_fastcall璋冪敤綰﹀畾鏄?浜?濡傚叾鍚嶏紝瀹冪殑涓昏鐗圭偣灝辨槸蹇紝鍥犱負瀹冩槸閫氳繃瀵勫瓨鍣ㄦ潵浼犻佸弬鏁扮殑錛堝疄
闄呬笂錛屽畠鐢‥CX鍜孍DX浼犻佸墠涓や釜鍙屽瓧錛圖WORD錛夋垨鏇村皬鐨勫弬鏁幫紝鍓╀笅鐨勫弬鏁頒粛鏃ц嚜鍙沖悜宸﹀帇鏍堜紶
閫侊紝琚皟鐢ㄧ殑鍑芥暟鍦ㄨ繑鍥炲墠娓呯悊浼犻佸弬鏁扮殑鍐呭瓨鏍堬級錛屽湪鍑芥暟鍚嶄慨楗扮害瀹氭柟闈紝瀹冨拰鍓嶄袱鑰呭潎涓嶅悓銆?br>_fastcall鏂瑰紡鐨勫嚱鏁伴噰鐢ㄥ瘎瀛樺櫒浼犻掑弬鏁幫紝VC灝嗗嚱鏁扮紪璇戝悗浼氬湪鍑芥暟鍚嶅墠闈㈠姞涓?@"鍓嶇紑錛屽湪鍑芥暟
鍚嶅悗鍔犱笂"@"鍜屽弬鏁扮殑瀛楄妭鏁般?br>4銆乼hiscall浠呬粎搴旂敤浜?C++"鎴愬憳鍑芥暟銆倀his鎸囬拡瀛樻斁浜嶤X瀵勫瓨鍣紝鍙傛暟浠庡彸鍒板乏鍘嬨倀hiscall涓嶆槸
鍏抽敭璇嶏紝鍥犳涓嶈兘琚▼搴忓憳鎸囧畾銆?br>5銆乶aked call閲囩敤1-4鐨勮皟鐢ㄧ害瀹氭椂錛屽鏋滃繀瑕佺殑璇濓紝榪涘叆鍑芥暟鏃剁紪璇戝櫒浼氫駭鐢熶唬鐮佹潵淇濆瓨ESI錛?br>EDI錛孍BX錛孍BP瀵勫瓨鍣紝閫鍑哄嚱鏁版椂鍒欎駭鐢熶唬鐮佹仮澶嶈繖浜涘瘎瀛樺櫒鐨勫唴瀹廣?br>naked call涓嶄駭鐢熻繖鏍風殑浠g爜銆俷aked call涓嶆槸綾誨瀷淇グ絎︼紝鏁呭繀欏誨拰_declspec鍏卞悓浣跨敤銆?br>鍏抽敭瀛?__stdcall銆乢_cdecl鍜宊_fastcall鍙互鐩存帴鍔犲湪瑕佽緭鍑虹殑鍑芥暟鍓嶏紝涔熷彲浠ュ湪緙栬瘧鐜鐨?br>Setting...\C/C++ \Code Generation欏歸夋嫨銆傚綋鍔犲湪杈撳嚭鍑芥暟鍓嶇殑鍏抽敭瀛椾笌緙栬瘧鐜涓殑閫夋嫨涓?br>鍚屾椂錛岀洿鎺ュ姞鍦ㄨ緭鍑哄嚱鏁板墠鐨勫叧閿瓧鏈夋晥銆傚畠浠搴旂殑鍛戒護琛屽弬鏁板垎鍒負/Gz銆?Gd鍜?Gr銆傜己鐪佺姸鎬?br>涓?Gd錛屽嵆__cdecl銆?br>瑕佸畬鍏ㄦā浠縋ASCAL璋冪敤綰﹀畾棣栧厛蹇呴』浣跨敤__stdcall璋冪敤綰﹀畾錛岃嚦浜庡嚱鏁板悕淇グ綰﹀畾錛屽彲浠ラ氳繃鍏跺畠
鏂規硶妯′豢銆傝繕鏈変竴涓煎緱涓鎻愮殑鏄疻INAPI瀹忥紝Windows.h鏀寔璇ュ畯錛屽畠鍙互灝嗗嚭鍑芥暟緲昏瘧鎴愰傚綋鐨?br>璋冪敤綰﹀畾錛屽湪WIN32涓紝瀹冭瀹氫箟涓篲_stdcall銆備嬌鐢╓INAPI瀹忓彲浠ュ垱寤鴻嚜宸辯殑APIs銆?br>2)鍚嶅瓧淇グ綰﹀畾
1銆佷慨楗板悕(Decoration name)
"C"鎴栬?C++"鍑芥暟鍦ㄥ唴閮紙緙栬瘧鍜岄摼鎺ワ級閫氳繃淇グ鍚嶈瘑鍒備慨楗板悕鏄紪璇戝櫒鍦ㄧ紪璇戝嚱鏁板畾涔夋垨鑰呭師
鍨嬫椂鐢熸垚鐨勫瓧絎︿覆銆傛湁浜涙儏鍐典笅浣跨敤鍑芥暟鐨勪慨楗板悕鏄繀瑕佺殑錛屽鍦ㄦā鍧楀畾涔夋枃浠墮噷澶存寚瀹氳緭鍑?C++"
閲嶈澆鍑芥暟銆佹瀯閫犲嚱鏁般佹瀽鏋勫嚱鏁幫紝鍙堝鍦ㄦ眹緙栦唬鐮侀噷璋?br>鐢?C""鎴?C++"鍑芥暟絳夈?br>淇グ鍚嶇敱鍑芥暟鍚嶃佺被鍚嶃佽皟鐢ㄧ害瀹氥佽繑鍥炵被鍨嬨佸弬鏁扮瓑鍏卞悓鍐沖畾銆?br>2銆佸悕瀛椾慨楗扮害瀹氶殢璋冪敤綰﹀畾鍜岀紪璇戠綾?C鎴朇++)鐨勪笉鍚岃屽彉鍖栥傚嚱鏁板悕淇グ綰﹀畾闅忕紪璇戠綾誨拰璋?br>鐢ㄧ害瀹氱殑涓嶅悓鑰屼笉鍚岋紝涓嬮潰鍒嗗埆璇存槑銆?br>a銆丆緙栬瘧鏃跺嚱鏁板悕淇グ綰﹀畾瑙勫垯錛?br>__stdcall璋冪敤綰﹀畾鍦ㄨ緭鍑哄嚱鏁板悕鍓嶅姞涓婁竴涓笅鍒掔嚎鍓嶇紑錛屽悗闈㈠姞涓婁竴涓?@"絎﹀彿鍜屽叾鍙傛暟鐨勫瓧鑺傛暟錛?br>鏍煎紡涓?a href="mailto:_functionname@number">_functionname@number銆?br>__cdecl璋冪敤綰﹀畾浠呭湪杈撳嚭鍑芥暟鍚嶅墠鍔犱笂涓涓笅鍒掔嚎鍓嶇紑錛屾牸寮忎負_functionname銆?br>__fastcall璋冪敤綰﹀畾鍦ㄨ緭鍑哄嚱鏁板悕鍓嶅姞涓婁竴涓?@"絎﹀彿錛屽悗闈篃鏄竴涓?@"絎﹀彿鍜屽叾鍙傛暟鐨勫瓧鑺傛暟錛?br>鏍煎紡涓篅functionname@number銆?br>瀹冧滑鍧囦笉鏀瑰彉杈撳嚭鍑芥暟鍚嶄腑鐨勫瓧絎﹀ぇ灝忓啓錛岃繖鍜孭ASCAL璋冪敤綰﹀畾涓嶅悓錛孭ASCAL綰﹀畾杈撳嚭鐨勫嚱鏁板悕
鏃犱換浣曚慨楗頒笖鍏ㄩ儴澶у啓銆?br>b銆丆++緙栬瘧鏃跺嚱鏁板悕淇グ綰﹀畾瑙勫垯錛?br>__stdcall璋冪敤綰﹀畾錛?br>1銆佷互"?"鏍囪瘑鍑芥暟鍚嶇殑寮濮嬶紝鍚庤窡鍑芥暟鍚嶏紱
2銆佸嚱鏁板悕鍚庨潰浠?@@YG"鏍囪瘑鍙傛暟琛ㄧ殑寮濮嬶紝鍚庤窡鍙傛暟琛紱
3銆佸弬鏁拌〃浠ヤ唬鍙瘋〃紺猴細
X--void 錛?br>D--char錛?br>E--unsigned char錛?br>F--short錛?br>H--int錛?br>I--unsigned int錛?br>J--long錛?br>K--unsigned long錛?br>M--float錛?br>N--double錛?br>_N--bool錛?br>....
PA--琛ㄧず鎸囬拡錛屽悗闈㈢殑浠e彿琛ㄦ槑鎸囬拡綾誨瀷錛屽鏋滅浉鍚岀被鍨嬬殑鎸囬拡榪炵畫鍑虹幇錛屼互"0"浠f浛錛屼竴涓?0"浠h〃
涓嬈¢噸澶嶏紱
4銆佸弬鏁拌〃鐨勭涓欏逛負璇ュ嚱鏁扮殑榪斿洖鍊肩被鍨嬶紝鍏跺悗渚濇涓哄弬鏁扮殑鏁版嵁綾誨瀷,鎸囬拡鏍囪瘑鍦ㄥ叾鎵鎸囨暟鎹被鍨?br>鍓嶏紱
5銆佸弬鏁拌〃鍚庝互"@Z"鏍囪瘑鏁翠釜鍚嶅瓧鐨勭粨鏉燂紝濡傛灉璇ュ嚱鏁版棤鍙傛暟錛屽垯浠?Z"鏍囪瘑緇撴潫銆?br>鍏舵牸寮忎負"?functionname@@YG*****@Z"鎴??functionname@@YG*XZ"錛屼緥濡?br>int Test1錛坈har *var1,unsigned long錛?a href="mailto:-----“?Test1@@YGHPADK@Z">-----“?Test1@@YGHPADK@Z”
void Test2錛堬級 -----“?Test2@@YGXXZ”
__cdecl璋冪敤綰﹀畾錛?br>瑙勫垯鍚屼笂闈㈢殑_stdcall璋冪敤綰﹀畾錛屽彧鏄弬鏁拌〃鐨勫紑濮嬫爣璇嗙敱涓婇潰鐨?@@YG"鍙樹負"@@YA"銆?br>__fastcall璋冪敤綰﹀畾錛?br>瑙勫垯鍚屼笂闈㈢殑_stdcall璋冪敤綰﹀畾錛屽彧鏄弬鏁拌〃鐨勫紑濮嬫爣璇嗙敱涓婇潰鐨?@@YG"鍙樹負"@@YI"銆?br>VC++瀵瑰嚱鏁扮殑鐪佺己澹版槑鏄?__cedcl",灝嗗彧鑳借C/C++璋冪敤.