CºÍC++»ìºÏ±à³Ì(__cplusplus Óë external "c" µÄʹÓÃ)
http://www.diybl.com/course/3_program/c++/cppjs/20090403/163906.html
CºÍC++»ìºÏ±à³Ì(__cplusplus Óë external "c" µÄʹÓÃ)
www.diybl.com¡¡Ê±¼ä£º2009-04-03¡¡×÷Õß:ÄäÃû ±à¼:sky µã»÷£º¡¡124 [ÆÀÂÛ]
µÚÒ»ÖÖÀí½â
±ÈÈç˵ÄãÓÃC++¿ª·¢ÁËÒ»¸öDLL¿â£¬ÎªÁËÄܹ»ÈÃCÓïÑÔÒ²Äܹ»µ÷ÓÃÄãµÄDLLÊä³ö(Export)µÄº¯Êý£¬ÄãÐèÒªÓÃextern "C"À´Ç¿ÖƱàÒëÆ÷²»ÒªÐÞ¸ÄÄãµÄ
º¯ÊýÃû¡£
ͨ³££¬ÔÚCÓïÑÔµÄÍ·ÎļþÖо³£¿ÉÒÔ¿´µ½ÀàËÆÏÂÃæÕâÖÖÐÎʽµÄ´úÂ룺
#ifdef __cplusplus
extern "C" {
#endif
/**** some declaration or so *****/
#ifdef __cplusplus
}
#endif /* end of __cplusplus */
ÄÇô£¬ÕâÖÖд·¨Ê²Ã´ÓÃÄØ£¿Êµ¼ÊÉÏ£¬ÕâÊÇΪÁËÈÃCPPÄܹ»ÓëC½Ó¿Ú¶ø²ÉÓõÄÒ»ÖÖÓï·¨ÐÎʽ¡£Ö®ËùÒÔ²ÉÓÃÕâÖÖ·½Ê½£¬ÊÇÒòΪÁ½ÖÖÓïÑÔÖ®¼äµÄһЩ²î
ÒìËùµ¼Öµġ£ÓÉÓÚCPPÖ§³Ö¶à̬ÐÔ£¬Ò²¾ÍÊǾßÓÐÏàͬº¯ÊýÃûµÄº¯Êý¿ÉÒÔÍê³É²»Í¬µÄ¹¦ÄÜ£¬CPPͨ³£ÊÇͨ¹ý²ÎÊýÇø·Ö¾ßÌåµ÷ÓõÄÊÇÄÄÒ»¸öº¯Êý¡£ÔÚ
±àÒëµÄʱºò£¬CPP±àÒëÆ÷»á½«²ÎÊýÀàÐͺͺ¯ÊýÃûÁ¬½ÓÔÚÒ»Æð£¬ÓÚÊÇÔÚ³ÌÐò±àÒë³ÉΪĿ±êÎļþÒÔºó£¬CPP±àÒëÆ÷¿ÉÒÔÖ±½Ó¸ù¾ÝÄ¿±êÎļþÖеķûºÅÃû
½«¶à¸öÄ¿±êÎļþÁ¬½Ó³ÉÒ»¸öÄ¿±êÎļþ»òÕß¿ÉÖ´ÐÐÎļþ¡£µ«ÊÇÔÚCÓïÑÔÖУ¬ÓÉÓÚÍêȫûÓжà̬ÐԵĸÅÄC±àÒëÆ÷ÔÚ±àÒëʱ³ýÁË»áÔÚº¯ÊýÃûÇ°ÃæÌí
¼ÓÒ»¸öÏ»®ÏßÖ®Í⣬ʲôҲ²»»á×ö£¨ÖÁÉٺܶà±àÒëÆ÷¶¼ÊÇÕâÑù¸ÉµÄ£©¡£ÓÉÓÚÕâÖÖµÄÔÒò£¬µ±²ÉÓÃCPPÓëC»ìºÏ±à³ÌµÄʱºò£¬¾Í¿ÉÄÜ»á³öÎÊÌâ¡£¼Ù
ÉèÔÚijһ¸öÍ·ÎļþÖж¨ÒåÁËÕâÑùÒ»¸öº¯Êý£º
int foo(int a, int b);
¶øÕâ¸öº¯ÊýµÄʵÏÖλÓÚÒ»¸ö.cÎļþÖУ¬Í¬Ê±£¬ÔÚ.cppÎļþÖе÷ÓÃÁËÕâ¸öº¯Êý¡£ÄÇô£¬µ±CPP±àÒëÆ÷±àÒëÕâ¸öº¯ÊýµÄʱºò£¬¾ÍÓпÉÄÜ»á°ÑÕâ¸öº¯Êý
Ãû¸Ä³É_fooii£¬ÕâÀïµÄii±íʾº¯ÊýµÄµÚÒ»²ÎÊýºÍµÚ¶þ²ÎÊý¶¼ÊÇÕûÐÍ¡£¶øC±àÒëÆ÷È´ÓпÉÄܽ«Õâ¸öº¯ÊýÃû±àÒë³É_foo¡£Ò²¾ÍÊÇ˵£¬ÔÚCPP±àÒëÆ÷µÃ
µ½µÄÄ¿±êÎļþÖУ¬foo()º¯ÊýÊÇÓÉ_fooii·ûºÅÀ´ÒýÓõ쬶øÔÚC±àÒëÆ÷Éú³ÉµÄÄ¿±êÎļþÖУ¬foo()º¯ÊýÊÇÓÉ_fooÖ¸´úµÄ¡£µ«Á¬½ÓÆ÷¹¤×÷µÄʱºò£¬Ëü
¿É²»¹ÜÉϲã²ÉÓõÄÊÇʲôÓïÑÔ£¬ËüÖ»ÈÏÄ¿±êÎļþÖеķûºÅ¡£ÓÚÊÇ£¬Á¬½ÓÆ÷½«»á·¢ÏÖÔÚ.cppÖе÷ÓÃÁËfoo()º¯Êý£¬µ«ÊÇÔÚÆäËüµÄÄ¿±êÎļþÖÐÈ´ÕÒ²»
µ½_fooiiÕâ¸ö·ûºÅ£¬ÓÚÊÇÌáʾÁ¬½Ó¹ý³Ì³ö´í¡£extern "C" {}ÕâÖÖÓï·¨ÐÎʽ¾ÍÊÇÓÃÀ´½â¾öÕâ¸öÎÊÌâµÄ¡£±¾ÎĽ«ÒÔʾÀý¶ÔÕâ¸öÎÊÌâ½øÐÐ˵Ã÷¡£
Ê×ÏȼÙÉèÓÐÏÂÃæÕâÑùÈý¸öÎļþ£º
/* file: test_extern_c.h */
#ifndef __TEST_EXTERN_C_H__
#define __TEST_EXTERN_C_H__
Ïà¹ØÎĵµ£º
°æÈ¨ÉêÃ÷£ºÒÔÏÂÄÚÈÝÊôÓÚ×÷ÕßÕýÔÚд×÷µÄ¡¶Èí¼þ²âÊÔʵ¼ù¡·Ò»ÊéµÄÄÚÈÝ£¬Î´¾Ðí¿É²»µÃÓÃÓÚÈκÎÕýʽ³ö°æÎïÖУ¬Èç¹û×ªÔØÇë×¢Ã÷³ö´¦¡£
×÷ÕߣºÖÜΰÃ÷
´úÂë¼ìÊÓÒªµã
´úÂë¼ìÊÓ¼¼ÄÜÊôÓÚ¿ª·¢ÈËÔ±µÄ»ù±¾¹¦£¬Äܹ»ºÜ´ó³Ì¶ÈµØ·´Ó¦³ö¿ª·¢ÈËÔ±µÄÄÜÁ¦Ë®Æ½£¬Ç°Ãæ4.4.1½ÚÒѾ½²¹ýÌá¸ßÆÀÉó¼ìÊӵķ½·¨¡£ÏÂÃæÒÔʵ¼ÊµÄC/C++ÓïÑÔ·½ÃæµÄ´úÂëÀ´½²½â ......
B/S½á¹¹£¬¼´Browser/Server£¨ä¯ÀÀÆ÷/·þÎñÆ÷£©½á¹¹£¬ÊÇËæ×ÅInternet¼¼ÊõµÄÐËÆð£¬¶ÔC/S½á¹¹µÄÒ»Öֱ仯»òÕ߸ĽøµÄ½á¹¹¡£ÔÚÕâÖÖ
½á¹¹Ï£¬Óû§½çÃæÍêȫͨ¹ýWWWä¯ÀÀÆ÷ʵÏÖ£¬Ò»²¿·ÖÊÂÎñÂß¼ÔÚǰ¶ËʵÏÖ£¬µ«ÊÇÖ÷ÒªÊÂÎñÂß¼ÔÚ·þÎñÆ÷¶ËʵÏÖ£¬ÐγÉËùν3-tier½á¹¹¡£B/S½á¹¹£¬Ö÷ÒªÊÇ
ÀûÓÃÁ˲»¶Ï³ÉÊìµÄWWWä¯ÀÀÆ÷¼¼Êõ£¬½áºÏä¯ÀÀÆ÷µÄ¶àÖ ......
C++²»¶¨²ÎÊýµÄÓ÷¨ £¨CÀàËÆ£©
2009-11-19 15:41
/*
va_list vl; //¶¨ÒåÒ»¸öÖ¸Ïò²ÎÊýÁбíµÄ±äÁ¿(Ò»¸ö...Ö¸Õë)
va_start(vl,first_param); //°ÑÖ¸Ïò²ÎÊýÁбíµÄ±äÁ¿³õʼ»¯
va_arg(vl,mode); //»ñÈ¡ÏÂÒ»¸ö²ÎÊý,²ÎÊýÀàÐÍÓɵڶþ¸ö²ÎÊýÖ¸¶¨,µÚ¶þ¸ö²ÎÊýÓÃÓÚÔÚva_argÄÚ²¿½øÐÐ³ß´ç¼ÆËã,ÒÔ±ãÕÒµ½ÏÂÒ»¸ö²ÎÊý
va_end(vl); //½áÊø
......
ÔÚlinuxÉÏд³ÌÐò¡¢×öÍø¹ÜµÄÈË£¬»ò¶à»òÉÙ¶¼»á¼¸Öֽű¾¡£½Å±¾ÓïÑÔÁé»îµÄ±äÁ¿ÀàÐÍ¡¢Ç¿´óµÄÕýÔò±í´ïʽ´¦ÀíÄÜÁ¦£¬ÔÙ¼ÓÉÏlinuxϵͳ±¾ÉíµÄ¹ÜµÀ¡¢Öض¨ÏòÒÔ¼°·á¸»µÄÃüÁîÐй¤¾ß£¬ÈÃÄã±à³ÌÆðÀ´ÓÎÈÐÓÐÓà¡£
¡¡¡¡¶øCÓïÑÔ¹ÌÈ»ÓÐÖÖÖÖÓÅÊÆ£¬µ«²»¿É·ñÈÏ£¬ºÜ¶à³¡ºÏÏ£¬Óýű¾ÓïÑÔ¸üΪ·½±ã£¬±ÈÈçÎÒÃǽ«¾ÙÀý˵Ã÷µÄ¶ÔÅäÖÃÎļþµÄ´¦Àí¡£
¡¡¡¡ÏÈ ......