Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

ÉîÈëÀí½âextern "C"

Ò»¡¢´ÓCÓëC++±àÒëÁ¬½Ó·½Ê½ÉîÈëÀí½âextern "C"
<1>.CºÍC++¶Ôº¯ÊýµÄ´¦Àí·½Ê½ÊDz»Í¬µÄ.±»extern "C"ÐÞÊεıäÁ¿ºÍº¯ÊýÊǰ´ÕÕCÓïÑÔ·½Ê½±àÒëºÍÁ¬½ÓµÄ.extern "C"ÓÃÓÚʵÏÖC++ÓëC¼°ÆäËüÓïÑԵĻìºÏ±à³Ì¡£
<2>.δ¼Óextern “C”ÉùÃ÷ʱµÄ±àÒ뷽ʽ
Ê×ÏÈ¿´¿´C++ÖжÔÀàËÆCµÄº¯ÊýÊÇÔõÑù±àÒëµÄ¡£
×÷ΪһÖÖÃæÏò¶ÔÏóµÄÓïÑÔ£¬C++Ö§³Öº¯ÊýÖØÔØ£¬¶ø¹ý³ÌʽÓïÑÔCÔò²»Ö§³Ö¡£º¯Êý±»C++±àÒëºóÔÚ·ûºÅ¿âÖеÄÃû×ÖÓëCÓïÑԵIJ»Í¬¡£ÀýÈ磬¼ÙÉèij¸öº¯ÊýµÄÔ­ÐÍΪ£º
void foo( int x, int y );
¸Ãº¯Êý±»C±àÒëÆ÷±àÒëºóÔÚ·ûºÅ¿âÖеÄÃû×ÖΪ_foo£¬¶øC++±àÒëÆ÷Ôò»á²úÉúÏñ_foo_int_intÖ®ÀàµÄÃû×Ö£¨²»Í¬µÄ±àÒëÆ÷¿ÉÄÜÉú³ÉµÄÃû×Ö²»Í¬£¬µ«ÊǶ¼²ÉÓÃÁËÏàͬµÄ»úÖÆ£¬Éú³ÉµÄÐÂÃû×Ö³ÆÎª“mangled name”£©¡£_foo_int_intÕâÑùµÄÃû×Ö°üº¬Á˺¯ÊýÃû¡¢º¯Êý²ÎÊýÊýÁ¿¼°ÀàÐÍÐÅÏ¢£¬C++¾ÍÊÇ¿¿ÕâÖÖ»úÖÆÀ´ÊµÏÖº¯ÊýÖØÔØµÄ¡£ÀýÈ磬ÔÚC++ÖУ¬º¯Êývoid foo( int x, int y )Óëvoid foo( int x, float y )±àÒëÉú³ÉµÄ·ûºÅÊDz»ÏàͬµÄ£¬ºóÕßΪ_foo_int_float¡£
ͬÑùµØ£¬C++ÖеıäÁ¿ ³ýÖ§³Ö¾Ö²¿±äÁ¿Í⣬»¹Ö§³ÖÀà³ÉÔ±±äÁ¿ºÍÈ«¾Ö±äÁ¿¡£Óû§Ëù±àд³ÌÐòµÄÀà³ÉÔ±±äÁ¿¿ÉÄÜÓëÈ«¾Ö±äÁ¿Í¬Ãû£¬ÎÒÃÇÒÔ"."À´Çø·Ö¡£¶ø±¾ÖÊÉÏ£¬±àÒëÆ÷ÔÚ½øÐбàÒëʱ£¬Óë º¯ÊýµÄ´¦ÀíÏàËÆ£¬Ò²ÎªÀàÖеıäÁ¿È¡ÁËÒ»¸ö¶ÀÒ»ÎÞ¶þµÄÃû×Ö£¬Õâ¸öÃû×ÖÓëÓû§³ÌÐòÖÐͬÃûµÄÈ«¾Ö±äÁ¿Ãû×Ö²»Í¬¡£
<3>.δ¼Óextern "C"ÉùÃ÷ʱµÄÁ¬½Ó·½Ê½
¼ÙÉèÔÚC++ÖУ¬Ä£¿éAµÄÍ·ÎļþÈçÏ£º
// Ä£¿éAÍ·Îļþ moduleA.h
#ifndef MODULE_A_H
#define MODULE_A_H
int foo( int x, int y );
#endif
ÔÚÄ£¿éBÖÐÒýÓøú¯Êý£º
// Ä£¿éBʵÏÖÎļþ moduleB.cpp
#include "moduleA.h"
foo(2,3);
ʵ¼ÊÉÏ£¬ÔÚÁ¬½Ó½×¶Î£¬Á¬½ÓÆ÷»á´ÓÄ£¿éAÉú³ÉµÄÄ¿±êÎļþmoduleA.objÖÐѰÕÒ_foo_int_intÕâÑùµÄ·ûºÅ£¡
<4>.¼Óextern "C"ÉùÃ÷ºóµÄ±àÒëºÍÁ¬½Ó·½Ê½
¼Óextern "C"ÉùÃ÷ºó£¬Ä£¿éAµÄÍ·Îļþ±äΪ£º
// Ä£¿éAÍ·Îļþ moduleA.h
#ifndef MODULE_A_H
#define MODULE_A_H
extern "C" int foo( int x, int y );
#endif
ÔÚÄ£¿éBµÄʵÏÖÎļþÖÐÈÔÈ»µ÷ÓÃfoo( 2,3 )£¬Æä½á¹ûÊÇ£º
£¨1£©Ä£¿éA±àÒëÉú³ÉfooµÄÄ¿±ê´úÂëʱ£¬Ã»ÓÐ¶ÔÆäÃû×Ö½øÐÐÌØÊâ´¦Àí£¬²ÉÓÃÁËCÓïÑԵķ½Ê½£»
£¨2£©Á¬½ÓÆ÷ÔÚΪģ¿éBµÄÄ¿±ê´úÂëѰÕÒfoo(2,3)µ÷ÓÃʱ£¬Ñ°ÕÒµÄÊÇδ¾­Ð޸ĵķûºÅÃû_foo¡£
¶þ¡¢extern "C"Ó÷¨
<1>.ÔÚC++ÖÐÒýÓÃCÓïÑÔÖеĺ¯ÊýºÍ±äÁ¿£¬ÔÚ°üº¬CÓïÑÔÍ·Îļþ£¨¼ÙÉèΪcExam


Ïà¹ØÎĵµ£º

CÓïÑԽṹÌåÓë¹²ÓÃÌå

11.1 ¶¨ÒåÒ»¸ö½á¹¹µÄÒ»°ãÐÎʽ
    ÔÚʵ¼ÊÎÊÌâÖУ¬Ò»×éÊý¾ÝÍùÍù¾ßÓв»Í¬µÄÊý¾ÝÀàÐÍ¡£ÀýÈ磬ÔÚѧÉúµÇ¼Ç±íÖУ¬ÐÕÃûӦΪ×Ö·ûÐÍ£»Ñ§ºÅ¿ÉΪÕûÐÍ»ò×Ö·ûÐÍ£»ÄêÁäӦΪÕûÐÍ£»ÐÔ±ðӦΪ×Ö·ûÐÍ£»³É¼¨¿ÉΪÕûÐÍ»òʵÐÍ¡£ ÏÔÈ»²»ÄÜÓÃÒ»¸öÊý×éÀ´´æ·ÅÕâÒ»×éÊý¾Ý¡£ÒòΪÊý×éÖи÷ÔªËØµÄÀàÐͺͳ¤¶È¶¼±ØÐëÒ»Ö£¬ÒÔ±ãÓÚ±àÒëϵͳ´¦Àí¡ ......

CÓïÑÔÎļþ

13.1 CÎļþ¸ÅÊö
    Ëùν“Îļþ”ÊÇÖ¸Ò»×éÏà¹ØÊý¾ÝµÄÓÐÐò¼¯ºÏ¡£Õâ¸öÊý¾Ý¼¯ÓÐÒ»¸öÃû³Æ£¬½Ð×öÎļþÃû¡£Êµ¼ÊÉÏÔÚÇ°ÃæµÄ¸÷ÕÂÖÐÎÒÃÇÒѾ­¶à´ÎʹÓÃÁËÎļþ£¬ÀýÈçÔ´³ÌÐòÎļþ¡¢Ä¿±êÎļþ¡¢¿ÉÖ´ÐÐÎļþ¡¢¿âÎļþ (Í·Îļþ)µÈ¡£
    Îļþͨ³£ÊÇפÁôÔÚÍⲿ½éÖÊ(Èç´ÅÅ̵È)Éϵģ¬ÔÚʹÓÃʱ²Åµ÷ÈëÄÚ´æÖ ......

ΪʲôѡÔñCÓïÑÔ

ΪʲôCÓïÑÔÒÀÈ»Èç´ËÁ÷ÐУ¿ÀúÊ·ÉÏ£¬ÓÉÓÚÖÖÖÖÔ­Òò£¬Òµ½çÑ¡ÔñÁËC£¬ÆäÖÐ×îÖ÷ÒªµÄÔ­Òò¾ÍÔÚÓÚËüµÄЧÂÊ¡£ÓÅÐãµÄC³ÌÐòµÄЧÂʼ¸ºõºÍ»ã
±àÓïÑÔ³ÌÐòÒ»Ñù¸ß£¬µ«C³ÌÐòÃ÷ÏԱȻã±àÓïÑÔ³ÌÐò¸üÒ×ÓÚ¿ª·¢¡£ºÍÐí¶àÆäËûÓïÑÔÏà±È£¬C¸øÓè³ÌÐòÔ±¸ü¶àµÄ¿ØÖÆÈ¨£¬Èç¿ØÖÆÊý¾ÝµÄ´æ´¢Î»Öúͳõʼ»¯¹ý³ÌµÈ¡£Cȱ·¦“°²È«Íø”ÌØÐÔ£¬ÕâËäÓÐÖúÓÚÌá¸ß ......

Êý¾Ý½á¹¹ÔÚCÓïÑÔÖеÄÓ¦ÓÃ


     ÎÒÊÇÒ»¸ö¼ÆËã»úרҵµÄ±¾¿ÆÉú£¬ÏÖÔÚÎÒÃǸոÕѧÍêÁËÊý¾Ý½á¹¹¡£¾Ý˵Êý¾Ý½á¹¹¶ÔÓÚÎÒÃDZà³ÌºÜÖØÒª£¬¿ÉÊÇÎÒÏÖÔÚ²»ÖªÔõô°ÑÊý¾Ý½á¹¹ºÍCÓïÑÔ½áºÏÆðÀ´£¬ÒÔ±ã¸üºÃµÄ½øÐÐcÓïÑÔ±à³Ì¡£ÓÐÄÄλ¸ßÊÖÖ¸µãÒ»¶þ£¬ÔÚÏ¸м¤²»¾¡£¡
......

CÓïÑÔº¯Êýµ÷ÓÃÔ¼¶¨


×ªÔØ×Ô£º
ܰÈÙ¼ÒÔ°blog
ÔÚCÓïÑÔÖУ¬¼ÙÉèÎÒÃÇÓÐÕâÑùµÄÒ»¸öº¯Êý£º
int function(int a,int b)
µ÷
ÓÃʱֻҪÓÃresult =
function(1,2)ÕâÑùµÄ·½Ê½¾Í¿ÉÒÔʹÓÃÕâ¸öº¯Êý¡£µ«ÊÇ£¬µ±¸ß¼¶ÓïÑÔ±»±àÒë³É¼ÆËã»ú¿ÉÒÔʶ±ðµÄ»úÆ÷Âëʱ£¬ÓÐÒ»¸öÎÊÌâ¾Í͹ÏÖ³öÀ´£ºÔÚCPUÖУ¬¼ÆËã
»úûÓа취֪µÀÒ»¸öº¯Êýµ÷ÓÃÐèÒª¶àÉÙ¸ö¡¢Ê²Ã´ÑùµÄ²ÎÊý£¬Ò² ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ