锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 1錛庡叧浜巁_declspec(dllimport)鍜宊_declspec(dllexport) 鍦ㄤ竴涓狣LL鐨勭紪鍐欒繃紼嬩腑錛屽鏋滆浣夸竴涓彉閲忋佷竴涓嚱鏁版垨涓涓被鑳藉琚閮ㄧ▼搴忚皟鐢紝鍦ㄥ嚱鏁板0鏄庝笂鍔犱笂__declspec(dllimport)鍏抽敭瀛椼?/p>
渚嬶細(xì) 寮曞嚭涓涓彉閲忥細(xì) 寮曞嚭涓涓嚱鏁幫細(xì) 寮曞嚭涓涓被錛?br />class __declspec(dllexport) CClassEx 鍦ㄥ閮ㄧ▼搴忓紩鐢―LL鏃訛紝濡傛灉閲囩敤闅愬紡璋冪敤鐨勬柟娉曪紙鍏充簬闅愬紡璋冪敤紼嶅悗璁ㄨ錛夛紝闇瑕佸寘鍚獶LL鏂囦歡鐩稿叧鐨勫ご鏂囦歡錛岃繖涓ご鏂囦歡鐢╛_declspec(dllimport)鍏抽敭瀛楁寚鍑轟簡(jiǎn)DLL瀵煎嚭鐨勫唴瀹癸紙瀹為檯涓婂氨鏄妸鍘熸潵鐨刜_declspec(dllexport)鍏ㄩ儴鏇挎崲涓篲_declspec(dllimport)錛夈?/p>
渚嬶細(xì) 寮曞叆涓涓彉閲忥細(xì) 寮曞叆涓涓嚱鏁幫細(xì) 寮曞叆涓涓被錛?br />class __declspec(dllimport) CClassEx 涓轟簡(jiǎn)鎻愰珮紼嬪簭鍙鎬э紝鍙互瀹氫箟濡備笅瀹忥細(xì) 瀹為檯涓婁竴鑸畾涔夊涓嬪畯錛?br /> MYDLL_EXPORTS
MYDLL_API
__declspec
(
dllexport
)
MYDLL_API
__declspec
(
dllimport
)
榪欐牱錛屽湪婧愮▼搴忕殑瀹炵幇鏂囦歡涓厛瀹氫箟
MYDLL_EXPORTS
錛屽啀鍖呭惈榪欎釜澶存枃浠訛紱鍦ㄥ紼嬪簭鍐咃紝鍙互鐩存帴鍖呭惈榪欎釜澶存枃浠躲傝繖縐嶆柟娉曞彲浠ュ疄鐜頒竴涓枃浠跺縐嶇敤閫斻?/span>
聽
2
錛庨殣寮忚皟鐢ㄥ拰鏄懼紡璋冪敤
闅愬紡璋冪敤鏄渶甯哥敤鐨勪竴縐嶈皟鐢ㄦ柟娉曘傚畠闇瑕佸師
DLL
鏂囦歡銆佸師澶存枃浠跺拰搴撴枃浠剁粍鎴愩傚湪紼嬪簭鍐呰鍖呭惈榪欎釜澶存枃浠訛紝騫跺姞鍏ュ簱鏂囦歡涓鍚岀紪璇戙傚湪紼嬪簭鍚姩鏃朵細(xì)鎶婃墍鏈夐殣寮忚皟鐢ㄧ殑
DLL
鏂囦歡鍔犺澆鍒板唴瀛樸?/span>
濡傛灉鎯沖湪浣跨敤鐨勬椂鍊欐墠鎶?/span>
DLL
鏂囦歡鍔犲叆鍒板唴瀛樼殑璇濓紝鍙互浣跨敤鏄懼紡璋冪敤銆傛樉寮忚皟鐢ㄥ彧闇瑕佸師
DLL
鏂囦歡鍗沖彲錛屼絾鏄嬌鐢ㄦ椂蹇呴』瀵圭煡閬撹繖涓?/span>
DLL
鏈夊摢浜涘鍑虹殑絎﹀彿銆傚彲浠ュ湪
VS
鐨勫懡浠よ鏂瑰紡涓嬭緭鍏モ?/span>
depends
鈥濆懡浠ゆ潵鏌ョ湅
DLL
淇℃伅銆?/span>
聽
紺轟緥錛?/font>
聽
闅愬紡璋冪敤錛?/font>
CallDll(
void
)
{
聽聽聽聽
wchar_t
wszBuf[ 32 ];
聽聽聽聽 wsprintf( wszBuf, TEXT(
"%d"
), fnDllTest( 9 ) );
//fnDllTest
DLL鏂囦歡瀵煎嚭鐨勬柟娉?span lang="EN-US">
聽聽聽聽 wprintf( wszBuf );
}
聽
鏄懼紡璋冪敤錛?/font>
CallDll(
void
)
{
聽聽聽聽
typedef
int
(*ADDPROC)(
int
i );
聽聽聽聽 ADDPROC Fn;
聽
聽聽聽聽 HINSTANCE hInst = LoadLibrary( L
"DllTest.dll"
);
聽聽聽聽
if
( NULL == hInst )
聽聽聽聽 {
聽聽聽聽聽聽聽聽 wprintf( L
"Failed on load DLL."
);
聽聽聽聽聽聽聽聽
return
;
聽聽聽聽 }
聽聽聽聽 Fn = ( ADDPROC )GetProcAddress( hInst,
"fnDllTest"
);
聽聽聽聽
//
_stdcall, 閭d箞榪欓噷鎴戜滑涔熷簲璇ヤ嬌鐢?span lang="EN-US">(_stdcall ADDPROC)
聽聽聽聽
if
( !Fn )
聽聽聽聽
聽聽聽聽 wprintf( L
"Failed on get Process Address."
);
聽聽聽聽
else
聽聽聽聽 {
聽聽聽聽聽聽聽聽
int
i;
聽聽聽聽聽聽聽聽 i = Fn( 9 );
聽聽聽聽聽聽聽聽
wchar_t
wszBuf[ 32 ];
聽聽聽聽聽聽聽聽 wsprintf( wszBuf, L
"%d"
, i );
聽聽聽聽聽聽聽聽 wprintf( wszBuf );
聽聽聽聽 }
聽聽聽聽 FreeLibrary(hInst);
//
DLL
聽聽聽聽
/*
聽聽聽聽
聽* ADDRPROC Add = (ADDPROC)GetProcAddress(hInst, "add");
絎屼釜鍙傛暟涔熷彲浠ヤ嬌鐢ㄥ簭鍙?span lang="EN-US">:
浠f浛鍑芥暟鍚?span lang="EN-US">.
聽聽聽聽
聽*/
}
3
錛庢敞鎰忎簨欏?/span>
濡傛灉浣跨敤
C++
緙栫▼錛岄偅涔堝湪紼嬪簭緙栬瘧鐨勬椂鍊欎細(xì)涓哄彉閲忓悕絳夌鍙烽噸鍛戒負(fù)璇稿鈥?/span>
?fnDllTest@QAEAAV
0
鈥?/font>
涔?span lang="EN-US">綾?span lang="EN-US">鐨?span lang="EN-US">褰㈠紡錛?span lang="EN-US">涓?span lang="EN-US">鏄?span lang="EN-US">寮?span lang="EN-US">璋冪敤甯?span lang="EN-US">鏉?span lang="EN-US">浜?span lang="EN-US">涓?span lang="EN-US">渚?span lang="EN-US">銆傞拡瀵?span lang="EN-US">榪?span lang="EN-US">涓?span lang="EN-US">闂錛?span lang="EN-US">鎴?span lang="EN-US">浠?span lang="EN-US">鍙互涓?span lang="EN-US">瑕?span lang="EN-US">瀵煎嚭鐨?span lang="EN-US">絎﹀彿鍔?span lang="EN-US">涓?span lang="EN-US">鈥?/span>
extern 鈥淐鈥?/font>
鈥濅慨楗扮錛屽氨鍙互淇濇寔鍘熸湁鍚嶇О銆備絾鏄鍑虹殑綾誨悕浠嶇劧鏄噸鍛藉悕鍚庣殑鍚嶇О錛岃鍐嶇爺絀剁爺絀躲?/span>
濡傛灉浣犱嬌鐢∕FC鐢熸垚MFC DLL閭d箞鍙鍋氬涓嬪畾涔夊氨鍙互浜?jiǎn)class AFX_EXT_CLASS yourClass銆?/span>
聽聽聽聽聽聽聽聽聽鍦ㄥ嚱鏁板0鏄庢垨瀹氫箟涓嚱鏁拌繑鍥炵被鍨嬪墠鍔犱笂鍏抽敭瀛梚nline鍗蟲妸min錛堬級(jí)鎸囧畾涓哄唴鑱斻?/strong> 聽聽 inline int min(int first, int secend) {/****/}; 聽聽聽聽聽聽inline鍑芥暟瀵圭紪璇戝櫒鑰岃█蹇呴』鏄彲瑙佺殑錛屼互渚垮畠鑳藉鍦ㄨ皟鐢ㄧ偣鍐呭睍寮璇ュ嚱鏁般備笌闈瀒nline鍑芥暟涓嶅悓鐨勬槸錛宨nline鍑芥暟蹇呴』鍦ㄨ皟鐢ㄨ鍑芥暟鐨勬瘡涓枃鏈枃浠朵腑瀹氫箟銆傚綋鐒?dòng)灱屽浜庡悓涓紼嬪簭鐨勪笉鍚屾枃浠訛紝濡傛灉inline鍑芥暟鍑虹幇鐨勮瘽錛屽叾瀹氫箟蹇呴』鐩稿悓銆傚浜庣敱涓や釜鏂囦歡compute.C鍜宒raw.C鏋勬垚鐨勭▼搴忔潵璇達(dá)紝紼嬪簭鍛樹笉鑳藉畾涔夎繖鏍風(fēng)殑min()鍑芥暟錛屽畠鍦╟ompute.C涓寚涓浠朵簨鎯咃紝鑰屽湪draw.C涓寚鍙﹀涓浠朵簨鎯呫傚鏋滀袱涓畾涔変笉鐩稿悓錛岀▼搴忓皢浼?xì)鏈夋湭瀹氫箟鐨勮湄?fù)錛?/p>
聽聽聽聽聽聽涓轟繚璇佷笉浼?xì)鍙戠敓杩欐狅L(fēng)殑浜嬫儏錛屽緩璁妸inline鍑芥暟鐨勫畾涔夋斁鍒板ご鏂囦歡涓傚湪姣忎釜璋冪敤璇nline鍑芥暟鐨勬枃浠朵腑鍖呭惈璇ュご鏂囦歡銆傝繖縐嶆柟娉曚繚璇佸姣忎釜inline鍑芥暟鍙湁涓涓畾涔夛紝涓旂▼搴忓憳鏃犻渶澶嶅埗浠g爜錛屽茍涓斾笉鍙兘鍦ㄧ▼搴忕殑鐢熷懡鏈熶腑寮曡搗鏃犳剰鐨勪笉鍖歸厤鐨勪簨鎯呫?/p>
錛堜簩錛夊唴鑱斿嚱鏁扮殑緙栫▼椋庢牸(鎽樿嚜楂樿川閲廋++/C 緙栫▼鎸囧崡)
鍏抽敭瀛梚nline 蹇呴』涓庡嚱鏁板畾涔変綋鏀懼湪涓璧鋒墠鑳戒嬌鍑芥暟鎴愪負(fù)鍐呰仈錛屼粎灝唅nline 鏀懼湪鍑芥暟澹版槑鍓嶉潰涓嶈搗浠諱綍浣滅敤銆?/p>
濡備笅椋庢牸鐨勫嚱鏁癋oo 涓嶈兘鎴愪負(fù)鍐呰仈鍑芥暟錛歩nline void Foo(int x, int y); // inline 浠呬笌鍑芥暟澹版槑鏀懼湪涓璧穠oid Foo(int x, int y){}鑰屽涓嬮鏍肩殑鍑芥暟Foo 鍒欐垚涓哄唴鑱斿嚱鏁幫細(xì)void Foo(int x, int y);inline void Foo(int x, int y) // inline 涓庡嚱鏁板畾涔変綋鏀懼湪涓璧穥}鎵浠ヨ錛宨nline 鏄竴縐嶁滅敤浜庡疄鐜扮殑鍏抽敭瀛椻濓紝鑰屼笉鏄竴縐嶁滅敤浜庡0鏄庣殑鍏抽敭瀛椻濄備竴鑸湴錛岀敤鎴峰彲浠ラ槄璇誨嚱鏁扮殑澹版槑錛屼絾鏄湅涓嶅埌鍑芥暟鐨勫畾涔夈傚敖綆″湪澶у鏁版暀縐戜功涓唴鑱斿嚱鏁扮殑澹版槑銆佸畾涔変綋鍓嶉潰閮藉姞浜?jiǎn)inline 鍏抽敭瀛楋紝浣嗘垜璁や負(fù)inline 涓嶅簲璇ュ嚭鐜板湪鍑芥暟鐨勫0鏄庝腑銆傝繖涓粏鑺傝櫧鐒朵笉浼?xì)濯?jiǎng)鍝嶅嚱鏁扮殑鍔熻兘錛屼絾鏄綋鐜頒簡(jiǎn)楂樿川閲廋++/C 紼嬪簭璁捐椋庢牸鐨勪竴涓熀鏈師鍒欙細(xì)澹版槑涓庡畾涔変笉鍙販涓轟竴璋堬紝鐢ㄦ埛娌℃湁蹇呰銆佷篃涓嶅簲璇ョ煡閬撳嚱鏁版槸鍚﹂渶瑕佸唴鑱斻?/p>
瀹氫箟鍦ㄧ被澹版槑涔嬩腑鐨勬垚鍛樺嚱鏁板皢鑷姩鍦版垚涓哄唴鑱斿嚱鏁?/strong>錛屼緥濡俢lass A{public:void Foo(int x, int y) {聽 } // 鑷姩鍦版垚涓哄唴鑱斿嚱鏁皚灝嗘垚鍛樺嚱鏁扮殑瀹氫箟浣撴斁鍦ㄧ被澹版槑涔嬩腑铏界劧鑳藉甫鏉ヤ功鍐欎笂鐨勬柟渚匡紝浣嗕笉鏄竴縐嶈壇濂界殑緙栫▼椋庢牸錛屼笂渚嬪簲璇ユ敼鎴愶細(xì)// 澶存枃浠禼lass A{public:void Foo(int x, int y)錛泒// 瀹氫箟鏂囦歡inline void A::Foo(int x, int y){}聽鎱庣敤鍐呰仈鍐呰仈鑳芥彁楂樺嚱鏁扮殑鎵ц鏁堢巼錛屼負(fù)浠涔堜笉鎶婃墍鏈夌殑鍑芥暟閮藉畾涔夋垚鍐呰仈鍑芥暟錛熷鏋滄墍鏈夌殑鍑芥暟閮芥槸鍐呰仈鍑芥暟錛岃繕鐢ㄥ緱鐫鈥滃唴鑱斺濊繖涓叧閿瓧鍚楋紵鍐呰仈鏄互浠g爜鑶ㄨ儉錛堝鍒訛級(jí)涓轟唬浠鳳紝浠呬粎鐪佸幓浜?jiǎn)鍑芥暟璋冪敤鐨勫紑閿錛屼粠鑰屾彁楂樺嚱鏁扮殑鎵ц鏁堢巼銆傚鏋滄墽琛屽嚱鏁頒綋鍐呬唬鐮佺殑鏃墮棿錛岀浉姣斾簬鍑芥暟璋冪敤鐨勫紑閿杈冨ぇ錛岄偅涔堟晥鐜囩殑鏀惰幏浼?xì)寰垶畱銆傚彟涓鏂歸潰錛屾瘡涓澶勫唴鑱斿嚱鏁扮殑璋冪敤閮借澶嶅埗浠g爜錛屽皢浣跨▼搴忕殑鎬諱唬鐮侀噺澧炲ぇ錛屾秷鑰楁洿澶氱殑鍐呭瓨絀洪棿銆備互涓嬫儏鍐典笉瀹滀嬌鐢ㄥ唴鑱旓細(xì)錛?錛夊鏋滃嚱鏁頒綋鍐呯殑浠g爜姣旇緝闀匡紝浣跨敤鍐呰仈灝嗗鑷村唴瀛樻秷鑰椾唬浠瘋緝楂樸傦紙2錛夊鏋滃嚱鏁頒綋鍐呭嚭鐜板驚鐜紝閭d箞鎵ц鍑芥暟浣撳唴浠g爜鐨勬椂闂磋姣斿嚱鏁拌皟鐢ㄧ殑寮閿澶с傜被鐨勬瀯閫犲嚱鏁板拰鏋愭瀯鍑芥暟瀹規(guī)槗璁╀漢璇В鎴愪嬌鐢ㄥ唴鑱旀洿鏈夋晥銆傝褰撳績(jī)鏋勯犲嚱鏁板拰鏋愭瀯鍑芥暟鍙兘浼?xì)闅愯棌涓浜涜涓猴紝濡傗滃伔鍋峰湴鈥濇墽琛屼簡(jiǎn)鍩虹被鎴栨垚鍛樺璞$殑鏋勯犲嚱鏁板拰鏋愭瀯鍑芥暟銆傛墍浠ヤ笉瑕侀殢渚垮湴灝嗘瀯閫犲嚱鏁板拰鏋愭瀯鍑芥暟鐨勫畾涔変綋鏀懼湪綾誨0鏄庝腑銆備竴涓ソ鐨勭紪璇戝櫒灝嗕細(xì)鏍規(guī)嵁鍑芥暟鐨勫畾涔変綋錛岃嚜鍔ㄥ湴鍙栨秷涓嶅煎緱鐨勫唴鑱旓紙榪欒繘涓姝ヨ鏄庝簡(jiǎn)inline 涓嶅簲璇ュ嚭鐜板湪鍑芥暟鐨勫0鏄庝腑錛夈?br />
__declspec(dllexport) int iEx;
__declspec(dllexport) int fnEx( int i );
{鈥︹;
__declspec(dllimport) int iEx;
__declspec(dllimport) int fnEx( int i );
{鈥︹;
#define DllImport __declspec(dllimport)
#define DllExport __declspec(dllexport)
浠ヤ究浣跨敤銆?/p>
]]>
錛堜竴錛塱nline鍑芥暟錛堟憳鑷狢++ Primer鐨勭涓夌増錛?/p>
娉ㄦ剰鐐?
鍐呰仈鍑芥暟鏃㈣兘澶熷幓闄ゅ嚱鏁拌皟鐢ㄦ墍甯︽潵鐨勬晥鐜囪礋鎷呭張鑳藉淇濈暀涓鑸嚱鏁扮殑浼樼偣銆傜劧鑰岋紝鍐呰仈鍑芥暟騫朵笉鏄竾鑳借嵂錛?聽
聽 鍦ㄤ竴浜涙儏鍐典笅錛屽畠鐢氳嚦鑳藉闄嶄綆紼嬪簭鐨勬ц兘銆傚洜姝ゅ湪浣跨敤鐨勬椂鍊欏簲璇ユ厧閲嶃?聽
聽 聽 聽 聽 聽 1錛庢垜浠厛鏉ョ湅鐪嬪唴鑱斿嚱鏁扮粰鎴戜滑甯︽潵鐨勫ソ澶勶細(xì)浠庝竴涓敤鎴風(fēng)殑瑙掑害鏉ョ湅錛屽唴鑱斿嚱鏁扮湅璧鋒潵鍜屾櫘閫氬嚱鏁頒竴鏍鳳紝 聽
聽 瀹冨彲浠ユ湁鍙傛暟鍜岃繑鍥炲鹼紝涔熷彲浠ユ湁鑷繁鐨勪綔鐢ㄥ煙錛岀劧鑰屽畠鍗翠笉浼?xì)寮曞叆涓鑸嚱鏁拌皟鐢ㄦ墍甯︽潵鐨勮礋鎷呫傚彟澶栵紝 聽
聽 瀹冨彲浠ユ瘮瀹忔洿瀹夊叏鏇村鏄撹皟璇曘?聽
聽 聽 褰撶劧鏈変竴鐐瑰簲璇ユ剰璇嗗埌錛宨nline 聽 specifier浠呬粎鏄緙栬瘧鍣ㄧ殑寤鴻錛岀紪璇戝櫒鏈夋潈鍒╁拷鐣ヨ繖涓緩璁傞偅涔堢紪璇戝櫒鏄?聽
聽 聽 濡備綍鍐沖畾鍑芥暟鍐呰仈涓庡惁鍛紵涓鑸儏鍐典笅鍏抽敭鎬у洜绱犲寘鎷嚱鏁頒綋鐨勫ぇ灝忥紝鏄惁鏈夊眬閮ㄥ璞¤澹版槑錛屽嚱鏁扮殑澶嶆潅鎬х瓑絳夈?聽
聽 聽 聽 聽 聽 2錛庨偅涔堝鏋滀竴涓嚱鏁拌澹版槑涓篿nline浣嗘槸鍗存病鏈夎鍐呰仈灝嗕細(xì)鍙戠敓浠涔堝憿錛熺悊璁轟笂錛屽綋緙栬瘧鍣ㄦ嫆緇濆唴鑱斾竴涓?聽
聽 鍑芥暟鐨勬椂鍊欙紝閭d釜鍑芥暟浼?xì)鍍忔櫘閫氬嚱鏁頒竴鏍瘋瀵瑰緟錛屼絾鏄繕浼?xì)鍑虹庮C竴浜涘叾浠栫殑闂銆備緥濡備笅闈㈣繖孌典唬鐮侊細(xì) 聽
聽 // 聽 filename 聽 Time.h 聽
聽 #include<ctime> 聽
聽 #include<iostream> 聽
聽 using 聽 namespace 聽 std; 聽
聽 class 聽 Time 聽
聽 { 聽
聽 public: 聽
聽 聽 聽 聽 聽 inline 聽 void 聽 Show() 聽 { 聽 for 聽 (int 聽 i 聽 = 聽 0; 聽 i<10; 聽 i++) 聽 cout<<time(0)<<endl;} 聽
聽 }; 聽
聽 聽 聽 聽 聽 鍥犱負(fù)鎴愬憳鍑芥暟Time::Show()鍖呮嫭涓涓眬閮ㄥ彉閲忓拰涓涓猣or寰幆錛屾墍浠ョ紪璇戝櫒涓鑸嫆緇漣nline錛屽茍涓旀妸瀹冨綋浣滀竴涓櫘閫氱殑鎴愬憳鍑芥暟銆備絾鏄繖涓寘鍚被澹版槑鐨勫ご鏂囦歡浼?xì)琚崟鐙?include榪涘悇涓嫭绔嬬殑緙栬瘧鍗曞厓涓細(xì) 聽
聽 聽 聽 聽 聽 // 聽 filename 聽 f1.cpp 聽
聽 #include 聽 "Time.hj" 聽
聽 void 聽 f1() 聽
聽 { 聽
聽 聽 聽 聽 聽 Time 聽 t1; 聽
聽 聽 聽 聽 聽 t1.Show(); 聽
聽 } 聽
聽 聽
聽 // 聽 filename 聽 f2.cpp 聽
聽 #include 聽 "Time.h" 聽
聽 void 聽 f2() 聽
聽 { 聽
聽 聽 聽 聽 聽 Time 聽 t2; 聽
聽 聽 聽 聽 聽 t2.Show(); 聽
聽 } 聽
聽 緇撴灉緙栬瘧鍣ㄤ負(fù)榪欎釜紼嬪簭鐢熸垚浜?jiǎn)涓や釜鐩稿悓鎴愬憳鍑芥暟鐨勬嫰偞濆Q?聽
聽 void 聽 f1(); 聽
聽 void 聽 f2(); 聽
聽 int 聽 main() 聽
聽 { 聽
聽 聽 聽 聽 聽 f1(); 聽 聽
聽 聽 聽 聽 聽 f2(); 聽
聽 聽 聽 return 聽 0; 聽
聽 } 聽
聽 聽
聽 褰撶▼搴忚閾炬帴鐨勬椂鍊欙紝linker灝嗕細(xì)闈㈠涓や釜鐩稿悓鐨凾ime::Show()鎷瘋礉錛屼簬鏄嚱鏁伴噸 聽
聽 瀹氫箟鐨勮繛鎺ラ敊璇彂鐢熴備絾鏄佷竴浜涚殑C++瀹炵幇瀵逛粯榪欑鎯呭喌鐨勫姙娉曟槸閫氳繃鎶婁竴涓?聽
聽 un-inlined鍑芥暟褰撲綔static鏉ュ鐞嗐傚洜姝ゆ瘡涓浠藉嚱鏁版嫹璐濅粎浠呭湪鑷繁鐨勭紪璇戝崟鍏冧腑 聽
聽 鍙錛岃繖鏍烽摼鎺ラ敊璇氨瑙e喅浜?jiǎn)锛屼絾鏄湪绋嬪簭涓嵈浼?xì)鐣欎笅澶氫喚鍑芥暟鎷瘋礉銆傚湪榪欑鎯呭喌 聽
聽 涓嬶紝紼嬪簭鐨勬ц兘涓嶄絾娌℃湁鎻愬崌錛屽弽鑰屽鍔犱簡(jiǎn)緙栬瘧鍜岄摼鎺ユ椂闂翠互鍙?qiáng)鏈緇堝彲鎵ц浣撶殑澶у皬銆?聽
聽 浣嗘槸騫歌繍鐨勬槸錛屾柊鐨凜++鏍囧噯涓叧浜巙n-inlined鍑芥暟鐨勮娉曞凡緇忔敼鍙樸備竴涓鍚堟爣鍑?聽
聽 C++瀹炵幇搴旇鍙敓鎴愪竴浠藉嚱鏁版嫹璐濄傜劧鑰岋紝瑕佹兂鎵鏈夌殑緙栬瘧鍣ㄩ兘鏀寔榪欎竴鐐瑰彲鑳借繕 聽
聽 闇瑕佸緢闀挎椂闂淬?聽
聽 鍙﹀鍏充簬鍐呰仈鍑芥暟榪樻湁涓や釜鏇翠護(hù)浜哄ご鐤肩殑闂銆傜涓涓棶棰樻槸璇ュ浣曡繘琛岀淮鎶ゃ?聽
聽 涓涓嚱鏁板紑濮嬬殑鏃跺欏彲鑳戒互鍐呰仈鐨勫艦寮忓嚭鐜幫紝浣嗘槸闅忕潃緋葷粺鐨勬墿灞曪紝鍑芥暟浣撳彲鑳借 聽
聽 姹傛坊鍔犻澶栫殑鍔熻兘錛岀粨鏋滃唴鑱斿嚱鏁板氨鍙樺緱涓嶅お鍙兘錛屽洜姝ら渶瑕佹妸inline 聽 specifier 聽
聽 鍘婚櫎浠ュ強(qiáng)鎶婂嚱鏁頒綋鏀懼埌涓涓崟鐙殑婧愭枃浠朵腑銆傚彟涓涓棶棰樻槸褰撳唴鑱斿嚱鏁拌搴旂敤鍦ㄤ唬 聽
聽 鐮佸簱鐨勬椂鍊欎駭鐢熴傚綋鍐呰仈鍑芥暟鏀瑰彉鐨勬椂鍊欙紝鐢ㄦ埛蹇呴』閲嶆柊緙栬瘧浠栦滑鐨勪唬鐮佷互鍙嶆槧榪?聽
聽 縐嶆敼鍙樸傜劧鑰屽浜庝竴涓潪鍐呰仈鍑芥暟錛岀敤鎴蜂粎浠呴渶瑕侀噸鏂伴摼鎺ュ氨鍙互浜?jiǎn)銆?聽
聽 榪欓噷鎯寵璇寸殑鏄紝鍐呰仈鍑芥暟騫朵笉鏄竴涓寮烘ц兘鐨勭伒涓瑰鑽傚彧鏈夊綋鍑芥暟闈炲父鐭皬 聽
聽 鐨勬椂鍊欏畠鎵嶈兘寰楀埌鎴戜滑鎯寵鐨勬晥鏋滐紝浣嗘槸濡傛灉鍑芥暟騫朵笉鏄緢鐭屼笖鍦ㄥ緢澶氬湴鏂歸兘琚?聽
聽 璋冪敤鐨勮瘽錛岄偅涔堝皢浼?xì)鋴慑緱鍙墽琛屼綋鐨勪綋绉澶с傛渶浠や漢鐑?chǔ)鎭肩殑杩樻槸褰摼~栬瘧鍣ㄦ嫆緇濆唴鑱?聽
聽 鐨勬椂鍊欍傚湪鑰佺殑瀹炵幇涓紝緇撴灉寰堜笉灝戒漢鎰忥紝铏界劧鍦ㄦ柊鐨勫疄鐜頒腑鏈夊緢澶х殑鏀瑰杽錛屼絾鏄?聽
聽 浠嶇劧榪樻槸涓嶉偅涔堝畬鍠勭殑銆備竴浜涚紪璇戝櫒鑳藉瓚沖鐨勮仾鏄庢潵鎸囧嚭鍝簺鍑芥暟鍙互鍐呰仈鍝簺 聽
聽 涓嶈兘錛屼絾鏄紝澶у鏁扮紪璇戝櫒灝變笉閭d箞鑱槑浜?jiǎn)锛屽洜姝q欏氨闇瑕佹垜浠殑緇忛獙鏉ュ垽鏂?聽
聽 濡傛灉鍐呰仈鍑芥暟涓嶈兘澧炲己琛岃兘錛屽氨閬垮厤浣跨敤瀹冿紒 聽
聽 */ 聽
聽 聽
聽 /* 聽
聽 鐢ㄦ寚閽堜唬鏇挎暟緇?聽 聽
聽 鍦ㄨ澶氱鎯呭喌涓嬶紝鍙互鐢ㄦ寚閽堣繍綆椾唬鏇挎暟緇勭儲(chǔ)寮曪紝榪欐牱鍋氬父甯歌兘浜х敓鍙堝揩鍙堢煭鐨?聽
聽 浠g爜銆備笌鏁扮粍绱㈠紩鐩告瘮錛屾寚閽堜竴鑸兘浣夸唬鐮侀熷害鏇村揩錛屽崰鐢ㄧ┖闂存洿灝戙備嬌鐢ㄥ緇存暟 聽
聽 緇勬椂宸紓鏇存槑鏄俱備笅闈㈢殑浠g爜浣滅敤鏄浉鍚岀殑錛屼絾鏄晥鐜囦笉涓鏍楓?聽
聽 聽
聽 char* 聽 pBuffer 聽 = 聽 new 聽 char[100]; 聽
聽 nTestNumber 聽 = 聽 0; 聽
聽 聽
聽 for(dwIndex 聽 = 聽 0;dwIndex 聽 < 聽 100;dwIndex 聽 ++) 聽
聽 { 聽
聽 nTestNumber 聽 = 聽 pBuffer[dwIndex]; 聽
聽 } 聽
聽 聽
聽 char* 聽 pTemp 聽 = 聽 pBuffer; 聽
聽 for(dwIndex 聽 = 聽 0;dwIndex 聽 < 聽 100;dwIndex 聽 ++) 聽
聽 { 聽
聽 nTestNumber 聽 = 聽 *(pTemp 聽 ++); 聽
聽 } 聽
聽 聽
聽 鎸囬拡鏂規(guī)硶鐨勪紭鐐規(guī)槸錛宲Buffer鐨勫湴鍧姣忔瑁呭叆鍦板潃pTemp鍚庯紝鍦ㄦ瘡嬈″驚鐜腑鍙渶瀵筽Temp澧為噺鎿嶄綔銆?聽
聽 鍦ㄦ暟緇勭儲(chǔ)寮曟柟娉曚腑錛屾瘡嬈″驚鐜腑閮藉繀欏昏繘琛屽熀浜巇wIndex鍊兼眰鏁扮粍涓嬫爣鐨勫鏉傝繍綆椼?聽
聽 */聽聽
]]>
緇撴瀯涓庣被寰堢浉浼鹼紝閮借〃紺哄彲浠ュ寘鍚暟鎹垚鍛樺拰鍑芥暟鎴愬憳鐨勬暟鎹粨鏋勩備笌綾諱笉鍚岀殑鏄紝緇撴瀯鏄肩被鍨嬪茍涓斾笉闇瑕佸爢鍒嗛厤銆傜粨鏋勭被鍨嬬殑鍙橀噺鐩存帴鍖呭惈緇撴瀯鐨勬暟鎹紝鑰岀被綾誨瀷鐨勫彉閲忓寘鍚鏁版嵁鐨勫紩鐢紙璇ュ彉閲忕О涓哄璞★級(jí)銆?struct 綾誨瀷閫傚悎琛ㄧず濡傜偣銆佺煩褰㈠拰棰滆壊榪欐牱鐨勮交閲忓璞°傚敖綆″彲鑳藉皢涓涓偣琛ㄧず涓虹被錛屼絾緇撴瀯鍦ㄦ煇浜涙柟妗堜腑鏇存湁鏁堛傚湪涓浜涙儏鍐典笅錛岀粨鏋勭殑鎴愭湰杈冧綆銆備緥濡傦紝濡傛灉澹版槑涓涓惈鏈?1000 涓偣瀵硅薄鐨勬暟緇勶紝鍒欏皢涓哄紩鐢ㄦ瘡涓璞″垎閰嶉檮鍔犵殑鍐呭瓨銆傜粨鏋勫彲浠ュ0鏄庢瀯閫犲嚱鏁幫紝浣嗗畠浠繀欏誨甫鍙傛暟銆傚0鏄庣粨鏋勭殑榛樿錛堟棤鍙傛暟錛夋瀯閫犲嚱鏁版槸閿欒鐨勩傛繪槸鎻愪緵榛樿鏋勯犲嚱鏁頒互灝嗙粨鏋勬垚鍛樺垵濮嬪寲涓哄畠浠殑榛樿鍊箋傚湪緇撴瀯涓垵濮嬪寲瀹炰緥瀛楁鏄敊璇殑銆傚湪綾諱腑,蹇呴』鍒濆鍖栧疄渚嬪璞? 浣跨敤 new 榪愮畻絎﹀垱寤虹粨鏋勫璞℃椂錛屽皢鍒涘緩璇ョ粨鏋勫璞★紝騫朵笖璋冪敤閫傚綋鐨勬瀯閫犲嚱鏁般備笌綾諱笉鍚岀殑鏄紝緇撴瀯鐨勫疄渚嬪寲鍙互涓嶄嬌鐢?new 榪愮畻絎︺傚鏋滀笉浣跨敤 new錛岄偅涔堝湪鍒濆鍖栨墍鏈夊瓧孌典箣鍓嶏紝瀛楁灝嗕繚鎸佹湭璧嬪肩姸鎬佷笖瀵硅薄涓嶅彲鐢ㄣ傚浜庣粨鏋勶紝涓嶅儚綾婚偅鏍峰瓨鍦ㄧ戶鎵褲備竴涓粨鏋勪笉鑳戒粠鍙︿竴涓粨鏋勬垨綾葷戶鎵匡紝鑰屼笖涓嶈兘浣滀負(fù)涓涓被鐨勫熀銆備絾鏄紝緇撴瀯浠庡熀綾?Object 緇ф壙銆?br />
緇撴瀯鍙疄鐜版帴鍙o紝鍏舵柟寮忓悓綾誨畬鍏ㄤ竴鏍楓?br />
涓涓槸鍊肩被鍨嬶紙緇撴瀯錛夛紝涓涓槸寮曠敤綾誨瀷錛堢被錛夛紝緇撴瀯鍦ㄤ紶閫掔殑鏃跺欏鏋滄病鏈夋寚瀹歳ef錛屽垯浼犻掔殑鏄唴瀛樹腑鐨勪竴鍒嗗壇鏈紝鑰宑lass鍒欐槸浼犻掑浠栫殑寮曠敤銆?br />
綾誨湪鍫嗕腑錛岀粨鏋勫湪鏍堜腑錛岀被浼犻掔殑鏄被鍦ㄥ爢涓殑鍦板潃錛岃岀粨鏋勬槸鍦ㄦ爤涓彟澶嶅埗浜?jiǎn)涓涓紶閫掞紝浣犳敼鍙樹紶閫掕繃鏉ョ殑緇撴瀯涓嶄細(xì)褰卞搷鍘熺粨鏋勩傝岀被鏄紩鐢紝鍏辯敤涓鍧楀唴瀛橈紝浼?xì)鏀瑰彉鍫嗕腑绫荤殑鍐呭?聽
聽聽
]]>
HANDLE hFind;
WIN32_FIND_DATA wfd;
if ( !SetCurrentDirectory(strPath) )
聽return;
hFind = FindFirstFile(_ucT("*.*"), &wfd);
if ( hFind == INVALID_HANDLE_VALUE )
聽return;
while(FindNextFile(hFind, &wfd))
{
聽if ( (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) && !(wfd.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN) )
聽{
聽聽if ( wfd.cFileName[0] != '.' )
聽聽{
聽聽聽UCString temp = (UCString)strPath + wfd.cFileName;
聽聽聽if ( HasSubFolder(ucLPCTSTR(temp)) )
聽聽聽{
聽聽聽}
聽聽}
聽}
}
SetCurrentDirectory(_ucT(".."));