[ZT]×Ô¼º¶¯ÊÖÓà C À©Õ¹ PHP
ÒýÑÔ:
ÓиÐÓÚ´ó¶àÊýÈËÈÏΪ PHP Ö»ÊÇÒ»ÖÖÈõÀàÐÍ£¬Ö»ÄÜ×öСÐÍwebÓ¦ÓõĽű¾ÓïÑÔ¡£ ÓëĿǰµÄJava, .Netƽ̨ÓÐÒ»¶¨µÄ²î¾à£¬ËùÒÔ¾ö¶¨Ð´Ò»Ð© PHP µÄÀ©Õ¹·½·¨ÎÄÕ£¬ÎÒÏàÐÅ
ÎÒÃÇPHPERÃÇͨ¹ý×Ô¼º¶¯ÊÖдÉÌÒµÀ©Õ¹£¬Ò»¶¨Äܹ¹½¨³öÇ¿´óµÄ£¬¼«ËÙµÄWebÓ¦Óã¬ÒòΪÀ©Õ¹±¾Éí¾ÍÊDZàÒëÐÍÓïÑÔ±àдµÄ(c/c++)£¬¶øÇÒ¿ÉÒÔ
Ô¤ÏÈפÁôÄÚ´æµÄ(ApacheÆô¶¯Ê±¼ÓÔØ)£¬ÓÐÁË C/C++ ±àдµÄÀ©Õ¹£¬ÎÒÃǼ¸ºõ¿ÉÒÔÎÞËù²»ÄÜ.
ºÇºÇ£¬Zend µÄ˵Ã÷ÎĵµÉÙÖ®ÓÖÉÙ£¬ÕæÁîÈËÍ·ÌÛ
----------------------------------------------------------
»·¾³ÒªÇó: Linux, GCC
Ê×ÏÈ£¬ÎÒÃÇÓ¦¸ÃÑ¡ÔñÈçºÎÈ¥¹¹½¨ÎÒÃǵÄÀ©Õ¹Ä£¿é£¬ ÓÐÈýÖÖ·½Ê½:
1. External Modules
Íⲿģ¿é£¬Ò²¾ÍÊDZàÒë³É¹²Ïí¿â£¬ÓÃdl()º¯Êý¶¯Ì¬¼ÓÔØ¡£
ºÃ´¦£º (1)²»ÐèÒªÖØÐ±àÒë PHP (2)PHPÌå»ýС£¬ÒòΪ²»ÐèÒª±àÒë½øPHP
ȱµã: (1)ÿ´Î*.php½Å±¾Ö´Ðж¼ÐèÒªÓà d ......
#1Â¥ µÃ·Ö£º0»Ø¸´ÓÚ£º2009-12-26 15:37:26
¼ÓÃÜÓкܶàÖÖ·½·¨.ͬʱC#Ò²ÌṩÁ˺ܶà¼ÓÃÜ·½·¨.ÄãÐèÒª¼ÓÃܺͽâÃÜÔÚ¼ÓÃÜËã·¨ÉÏÐèҪʹÓöԳƼÓÃÜ.ÎÒ¸øÄãÌṩһ¸ö¼òµ¥µÄËã·¨.ÔÚ±£´æµÄʱºò¿ÉÒÔʹÓöþ½øÖƵķ½Ê½À´±£´æµ½Îļþ.
C# code
using System;
using System.IO;
using System.Text;
using System.Security.Cryptography;
namespace Tools
{
/// <summary>
/// ¼ÓÃÜ
/// </summary>
public class AES
{
//ĬÈÏÃÜÔ¿ÏòÁ¿
private static byte[] Keys = { 0x18, 0x72, 0x65, 0x79, 0x6F, 0x57, 0x6D, 0x79, 0x35, 0x6E, 0x6F, 0x77, 0x6D, 0x61, 0x6E, 0x3F };
/// <summary>
/// ÉèÖüÓÃÜÃܳ×ÏòÁ¿
/// </summary>
public static byte[] IV
{
set { Keys = value; }
get { return Keys; }
}
/// <summary>
/// AES¼ÓÃÜÊý¾Ý
/// </summary>
/// <param name="encryptString">ÐèÒª¼ÓÃܵÄÊý¾Ý</param>
/// <param name="encryptKey">¼Ó ......
C/C++Êý×éÃûÓëÖ¸ÕëÇø±ðÉî²ã̽Ë÷
×÷ÕߣºËᦻª e-mail:21cnbao_AT_21cn.com [AT -> @]
1. ÒýÑÔ
Ö¸ÕëÊÇC/C++ÓïÑÔµÄÌØÉ«£¬¶øÊý×éÃûÓëÖ¸ÕëÓÐÌ«¶àµÄÏàËÆ£¬ÉõÖÁºÜ¶àʱºò£¬Êý×éÃû¿ÉÒÔ×÷ΪָÕëʹÓá£ÓÚÊǺõ£¬ºÜ¶à
³ÌÐòÉè¼ÆÕ߾ͱ»¸ãºýÍ¿ÁË¡£¶øÐí¶àµÄ´óѧÀÏʦ£¬ËûÃÇÔÚC ÓïÑԵĽÌѧ¹ý³ÌÖÐÒ²´íÎóµÃ¸øÑ§Éú½²½â£º“Êý×éÃû¾ÍÊÇÖ¸Õ딡£
ºÜÐÒÔË£¬ÎҵĴóѧÀÏʦ¾ÍÊÇÆäÖÐÖ®Ò»¡£Ê±ÖÁ½ñÈÕ£¬ÎÒÈÕ¸´Ò»ÈյؽøÐÐ×ÅC/C++ÏîÄ¿µÄ¿ª·¢£¬¶øÉí±ß»¹Ò»Ö±³äÂúÕâÑùµÄ
³ÌÐòÔ±£¬ËûÃDZ£Áô×Å“Êý×éÃû¾ÍÊÇÖ¸Õ딵ÄÎó½â¡£
2. ħ»ÃÊý×éÃû
Çë¿´³ÌÐò£¨±¾ÎijÌÐòÔÚWIN32 ƽ̨ϱàÒ룩£º
1. #include <iostream.h>
2. int main(int argc, char* argv[])
3. {
4. char str[10];
5. char *pStr = str;
6. cout << sizeof(str) << endl;
7. cout << sizeof(pStr) << endl;
8. return 0;
9. }
2.1 Êý×éÃû²»ÊÇÖ¸Õë
ÎÒÃÇÏÈÀ´ÍÆ·“Êý×éÃû¾ÍÊÇ2.1 Êý×éÃû²»ÊÇÖ¸Õë
ÎÒÃÇÏÈÀ´ÍÆ·“Êý×éÃû¾ÍÊÇÖ¸Õ딵Ä˵·¨£¬Ó÷´Ö¤·¨¡£
Ö¤Ã÷ Êý×éÃû²»ÊÇÖ¸Õë
¼ÙÉ裺Êý×éÃûÊÇÖ¸Õ룻
Ôò£ºpStr ºÍstr ¶¼ÊÇÖ¸Õ룻
ÒòΪ£ºÔÚWIN32 ƽ̨Ï£¬Ö¸Õ볤¶ÈΪ4£»
......
C/C++Êý×éÃûÓëÖ¸ÕëÇø±ðÉî²ã̽Ë÷
×÷ÕߣºËᦻª e-mail:21cnbao_AT_21cn.com [AT -> @]
1. ÒýÑÔ
Ö¸ÕëÊÇC/C++ÓïÑÔµÄÌØÉ«£¬¶øÊý×éÃûÓëÖ¸ÕëÓÐÌ«¶àµÄÏàËÆ£¬ÉõÖÁºÜ¶àʱºò£¬Êý×éÃû¿ÉÒÔ×÷ΪָÕëʹÓá£ÓÚÊǺõ£¬ºÜ¶à
³ÌÐòÉè¼ÆÕ߾ͱ»¸ãºýÍ¿ÁË¡£¶øÐí¶àµÄ´óѧÀÏʦ£¬ËûÃÇÔÚC ÓïÑԵĽÌѧ¹ý³ÌÖÐÒ²´íÎóµÃ¸øÑ§Éú½²½â£º“Êý×éÃû¾ÍÊÇÖ¸Õ딡£
ºÜÐÒÔË£¬ÎҵĴóѧÀÏʦ¾ÍÊÇÆäÖÐÖ®Ò»¡£Ê±ÖÁ½ñÈÕ£¬ÎÒÈÕ¸´Ò»ÈյؽøÐÐ×ÅC/C++ÏîÄ¿µÄ¿ª·¢£¬¶øÉí±ß»¹Ò»Ö±³äÂúÕâÑùµÄ
³ÌÐòÔ±£¬ËûÃDZ£Áô×Å“Êý×éÃû¾ÍÊÇÖ¸Õ딵ÄÎó½â¡£
2. ħ»ÃÊý×éÃû
Çë¿´³ÌÐò£¨±¾ÎijÌÐòÔÚWIN32 ƽ̨ϱàÒ룩£º
1. #include <iostream.h>
2. int main(int argc, char* argv[])
3. {
4. char str[10];
5. char *pStr = str;
6. cout << sizeof(str) << endl;
7. cout << sizeof(pStr) << endl;
8. return 0;
9. }
2.1 Êý×éÃû²»ÊÇÖ¸Õë
ÎÒÃÇÏÈÀ´ÍÆ·“Êý×éÃû¾ÍÊÇ2.1 Êý×éÃû²»ÊÇÖ¸Õë
ÎÒÃÇÏÈÀ´ÍÆ·“Êý×éÃû¾ÍÊÇÖ¸Õ딵Ä˵·¨£¬Ó÷´Ö¤·¨¡£
Ö¤Ã÷ Êý×éÃû²»ÊÇÖ¸Õë
¼ÙÉ裺Êý×éÃûÊÇÖ¸Õ룻
Ôò£ºpStr ºÍstr ¶¼ÊÇÖ¸Õ룻
ÒòΪ£ºÔÚWIN32 ƽ̨Ï£¬Ö¸Õ볤¶ÈΪ4£»
......
C/C++ÖеÄÈÕÆÚºÍʱ¼ä time_tÓëstruct tmת»»
ͻ񻣼
±¾ÎÄ´Ó½éÉÜ»ù´¡¸ÅÄîÈëÊÖ£¬Ì½ÌÖÁËÔÚC/C++ÖжÔÈÕÆÚºÍʱ¼ä²Ù×÷ËùÓõ½µÄÊý¾Ý½á¹¹ºÍº¯Êý£¬²¢¶Ô¼ÆÊ±¡¢Ê±¼äµÄ»ñÈ¡¡¢Ê±¼äµÄ¼ÆËãºÍÏÔʾ¸ñʽµÈ·½Ãæ½øÐÐÁ˲ûÊö¡£±¾ÎÄ»¹Í¨¹ý´óÁ¿µÄʵÀýÏòÄãչʾÁËtime.hÍ·ÎļþÖÐÉùÃ÷µÄ¸÷ÖÖº¯ÊýºÍÊý¾Ý½á¹¹µÄÏêϸʹÓ÷½·¨¡£
¹Ø¼ü×Ö£ºUTC£¨ÊÀ½ç±ê׼ʱ¼ä£©£¬Calendar Time£¨ÈÕÀúʱ¼ä£©£¬epoch£¨Ê±¼äµã£©£¬clock tick£¨Ê±ÖÓ¼ÆÊ±µ¥Ôª£©
1£®¸ÅÄî
ÔÚC/C++ÖУ¬¶Ô×Ö·û´®µÄ²Ù×÷ÓкܶàÖµµÃ×¢ÒâµÄÎÊÌ⣬ͬÑù£¬C/C++¶Ôʱ¼äµÄ²Ù×÷Ò²ÓÐÐí¶àÖµµÃ´ó¼Ò×¢ÒâµÄµØ·½¡£×î½ü£¬ÔÚ¼¼ÊõȺÖÐÓкܶàÍøÓÑÒ²¶à´ÎÎʵ½¹ýC++ÓïÑÔÖжÔʱ¼äµÄ²Ù×÷¡¢»ñÈ¡ºÍÏÔʾµÈµÈµÄÎÊÌâ¡£ÏÂÃæ£¬ÔÚÕâÆªÎÄÕÂÖУ¬±ÊÕß½«Ö÷Òª½éÉÜÔÚC/C++ÖÐʱ¼äºÍÈÕÆÚµÄʹÓ÷½·¨.
ͨ¹ýѧϰÐí¶àC/C++¿â£¬Äã¿ÉÒÔÓкܶà²Ù×÷¡¢Ê¹ÓÃʱ¼äµÄ·½·¨¡£µ«ÔÚÕâ֮ǰÄãÐèÒªÁ˽âһЩ“ʱ¼ä”ºÍ“ÈÕÆÚ”µÄ¸ÅÄÖ÷ÒªÓÐÒÔϼ¸¸ö£º
Coordinated Universal Time£¨UTC£©£ºÐµ÷ÊÀ½çʱ£¬ÓÖ³ÆÎªÊÀ½ç±ê׼ʱ¼ä£¬Ò²¾ÍÊÇ´ó¼ÒËùÊìÖªµÄ¸ñÁÖÍþÖαê׼ʱ¼ä£¨Greenwich Mean Time£¬GMT£©¡£±ÈÈ磬ÖйúÄڵصÄʱ¼äÓëUTCµÄʱ²îΪ+8£¬Ò²¾ÍÊÇUTC+8¡£ÃÀ¹úÊÇUTC-5¡£
Calendar Time£ºÈÕÀúʱ¼ä£¬Ê ......
C/C++ÖеÄÈÕÆÚºÍʱ¼ä time_tÓëstruct tmת»»
ͻ񻣼
±¾ÎÄ´Ó½éÉÜ»ù´¡¸ÅÄîÈëÊÖ£¬Ì½ÌÖÁËÔÚC/C++ÖжÔÈÕÆÚºÍʱ¼ä²Ù×÷ËùÓõ½µÄÊý¾Ý½á¹¹ºÍº¯Êý£¬²¢¶Ô¼ÆÊ±¡¢Ê±¼äµÄ»ñÈ¡¡¢Ê±¼äµÄ¼ÆËãºÍÏÔʾ¸ñʽµÈ·½Ãæ½øÐÐÁ˲ûÊö¡£±¾ÎÄ»¹Í¨¹ý´óÁ¿µÄʵÀýÏòÄãչʾÁËtime.hÍ·ÎļþÖÐÉùÃ÷µÄ¸÷ÖÖº¯ÊýºÍÊý¾Ý½á¹¹µÄÏêϸʹÓ÷½·¨¡£
¹Ø¼ü×Ö£ºUTC£¨ÊÀ½ç±ê׼ʱ¼ä£©£¬Calendar Time£¨ÈÕÀúʱ¼ä£©£¬epoch£¨Ê±¼äµã£©£¬clock tick£¨Ê±ÖÓ¼ÆÊ±µ¥Ôª£©
1£®¸ÅÄî
ÔÚC/C++ÖУ¬¶Ô×Ö·û´®µÄ²Ù×÷ÓкܶàÖµµÃ×¢ÒâµÄÎÊÌ⣬ͬÑù£¬C/C++¶Ôʱ¼äµÄ²Ù×÷Ò²ÓÐÐí¶àÖµµÃ´ó¼Ò×¢ÒâµÄµØ·½¡£×î½ü£¬ÔÚ¼¼ÊõȺÖÐÓкܶàÍøÓÑÒ²¶à´ÎÎʵ½¹ýC++ÓïÑÔÖжÔʱ¼äµÄ²Ù×÷¡¢»ñÈ¡ºÍÏÔʾµÈµÈµÄÎÊÌâ¡£ÏÂÃæ£¬ÔÚÕâÆªÎÄÕÂÖУ¬±ÊÕß½«Ö÷Òª½éÉÜÔÚC/C++ÖÐʱ¼äºÍÈÕÆÚµÄʹÓ÷½·¨.
ͨ¹ýѧϰÐí¶àC/C++¿â£¬Äã¿ÉÒÔÓкܶà²Ù×÷¡¢Ê¹ÓÃʱ¼äµÄ·½·¨¡£µ«ÔÚÕâ֮ǰÄãÐèÒªÁ˽âһЩ“ʱ¼ä”ºÍ“ÈÕÆÚ”µÄ¸ÅÄÖ÷ÒªÓÐÒÔϼ¸¸ö£º
Coordinated Universal Time£¨UTC£©£ºÐµ÷ÊÀ½çʱ£¬ÓÖ³ÆÎªÊÀ½ç±ê׼ʱ¼ä£¬Ò²¾ÍÊÇ´ó¼ÒËùÊìÖªµÄ¸ñÁÖÍþÖαê׼ʱ¼ä£¨Greenwich Mean Time£¬GMT£©¡£±ÈÈ磬ÖйúÄڵصÄʱ¼äÓëUTCµÄʱ²îΪ+8£¬Ò²¾ÍÊÇUTC+8¡£ÃÀ¹úÊÇUTC-5¡£
Calendar Time£ºÈÕÀúʱ¼ä£¬Ê ......
´Óprintf̸¿É±ä²ÎÊýº¯ÊýµÄʵÏÖ ×ªÌù
ÔÎÄ×÷ÕߣºÈÖÑÇÐÂ
ÕªÒª£ºÒ»Ö±ÒÔÀ´¶¼¾õµÃprintfËÆºõÊÇcÓïÑÔ¿âÖй¦ÄÜ×îÇ¿´óµÄº¯ÊýÖ®Ò»£¬²»½öÒòΪËüÄܸñʽ»¯Êä³ö£¬¸üÔÚÓÚËüµÄ²ÎÊý¸öÊýûÓÐÏÞÖÆ£¬Òª¼¸¸ö¾Í¸ø¼¸¸ö£¬À´Õß²»¾Ü¡£printfÕâÖÖ¶Ô²ÎÊý¸öÊýºÍ²ÎÊýÀàÐ͵ÄÇ¿´óÊÊÓ¦ÐÔ£¬ÈÃÈ˲úÉúÁ˶ÔËü½øÐÐ̽Ë÷µÄŨºñÐËȤ¡£
¹Ø¼ü×Ö£ºprintf, ¿É±ä²ÎÊý
1. ʹÓÃÇéÐÎ
int a =10;
double b = 20.0;
char *str = "Hello world";
printf("begin print\n");
printf("a=%d, b=%.3f, str=%s\n", a, b, str);
...
¡¡¡¡´ÓprintfµÄʹÓÃÇé¿öÀ´¿´£¬ÎÒÃDz»ÄÑ·¢ÏÖÒ»¸ö¹æÂÉ£¬¾ÍÊÇÎÞÂÛÆä¿É±äµÄ²ÎÊýÓжàÉÙ¸ö£¬printfµÄµÚÒ»¸ö²ÎÊý×ÜÊÇÒ»¸ö×Ö·û´®¡£¶øÕýÊÇÕâµÚÒ»¸ö²ÎÊý£¬Ê¹µÃËü¿ÉÒÔÈ·ÈϺóÃæ»¹ÓÐÓжàÉÙ¸ö²ÎÊýÎ²Ëæ¡£¶øÎ²ËæµÄÿ¸ö²ÎÊýÕ¼ÓõÄÕ»¿Õ¼ä´óСÓÖÊÇͨ¹ýµÚÒ»¸ö¸ñʽ×Ö·û´®È·¶¨µÄ¡£È»¶øprintfµ½µ×ÊÇÔõÑùÈ¡µÚÒ»¸ö²ÎÊýºóÃæµÄ²ÎÊýÖµµÄÄØ£¬Çë¿´ÈçÏ´úÂë
2. printf º¯ÊýµÄʵÏÖ
//acenv.h
typedef char *va_list;
#define _AUPBND (sizeof (acpi_native_int) - 1)
#define _ADNBND (sizeof (acpi_native_int) ......
´Óprintf̸¿É±ä²ÎÊýº¯ÊýµÄʵÏÖ ×ªÌù
ÔÎÄ×÷ÕߣºÈÖÑÇÐÂ
ÕªÒª£ºÒ»Ö±ÒÔÀ´¶¼¾õµÃprintfËÆºõÊÇcÓïÑÔ¿âÖй¦ÄÜ×îÇ¿´óµÄº¯ÊýÖ®Ò»£¬²»½öÒòΪËüÄܸñʽ»¯Êä³ö£¬¸üÔÚÓÚËüµÄ²ÎÊý¸öÊýûÓÐÏÞÖÆ£¬Òª¼¸¸ö¾Í¸ø¼¸¸ö£¬À´Õß²»¾Ü¡£printfÕâÖÖ¶Ô²ÎÊý¸öÊýºÍ²ÎÊýÀàÐ͵ÄÇ¿´óÊÊÓ¦ÐÔ£¬ÈÃÈ˲úÉúÁ˶ÔËü½øÐÐ̽Ë÷µÄŨºñÐËȤ¡£
¹Ø¼ü×Ö£ºprintf, ¿É±ä²ÎÊý
1. ʹÓÃÇéÐÎ
int a =10;
double b = 20.0;
char *str = "Hello world";
printf("begin print\n");
printf("a=%d, b=%.3f, str=%s\n", a, b, str);
...
¡¡¡¡´ÓprintfµÄʹÓÃÇé¿öÀ´¿´£¬ÎÒÃDz»ÄÑ·¢ÏÖÒ»¸ö¹æÂÉ£¬¾ÍÊÇÎÞÂÛÆä¿É±äµÄ²ÎÊýÓжàÉÙ¸ö£¬printfµÄµÚÒ»¸ö²ÎÊý×ÜÊÇÒ»¸ö×Ö·û´®¡£¶øÕýÊÇÕâµÚÒ»¸ö²ÎÊý£¬Ê¹µÃËü¿ÉÒÔÈ·ÈϺóÃæ»¹ÓÐÓжàÉÙ¸ö²ÎÊýÎ²Ëæ¡£¶øÎ²ËæµÄÿ¸ö²ÎÊýÕ¼ÓõÄÕ»¿Õ¼ä´óСÓÖÊÇͨ¹ýµÚÒ»¸ö¸ñʽ×Ö·û´®È·¶¨µÄ¡£È»¶øprintfµ½µ×ÊÇÔõÑùÈ¡µÚÒ»¸ö²ÎÊýºóÃæµÄ²ÎÊýÖµµÄÄØ£¬Çë¿´ÈçÏ´úÂë
2. printf º¯ÊýµÄʵÏÖ
//acenv.h
typedef char *va_list;
#define _AUPBND (sizeof (acpi_native_int) - 1)
#define _ADNBND (sizeof (acpi_native_int) ......
extern³ýÁËÄܹ»ÓÃÓÚÉùÃ÷±äÁ¿£¬ÒѾÔÚÍⲿ±»¶¨Ò壬²»ÓÃÖØÐ¶¨ÒåºÍ·ÖÅäÄÚ´æ¿Õ¼ä£¬»¹¿ÉÒÔÔÚC++ÓëC½øÐÐÏ໥º¯Êýµ÷Ó÷½Ãæ»áÓкܴóµÄÓô¦¡£
Ê×ÏÈ£¬ÎÒÃÇÀ´¿´Ò»Ï£¬ÎªÊ²Ã´C++ºÍCÓïÑÔ²»ÄÜÏ໥½øÐк¯Êýµ÷Óãº
±àдÈçϵÄÔ´Îļþ£º
int func(int i)
{
return 1;
}
·Ö±ð´æÎªtest.cc,test.c£¬·Ö±ð½øÐбàÒëÉú³ÉobjectÎļþ£º
g++ -c test.cc -o testcc
gcc -c test.c -o testc
ʹÓÃnmÃüÁî²é¿´Éú³ÉµÄobjectÎļþµÄ²»Í¬ÔÚÄĸöµØ·½£º
nm testcc
00000000 T _Z4funci
U __gxx_personality_v0
nm testc
00000000 T func
¿´³öÀ´Á˰ɣ¬C++±àÒëÆ÷°Ñ²ÎÊýÐÅÏ¢±àÒëºó·Åµ½Á˺¯ÊýµÄ¶ÔÏóÃû×ÖÀïÃæ£¨ÎªÁËʵÏÖ¶à̬£©£¬ËùÒÔ²»ÄÜ»¥ÏàÖ±½Óµ÷Óá£
ÖªµÀÁËÔÒò£¬½â¾öµÄ°ì·¨×ÔÈ»¾ÍÓÐÁË£¬Ö»Òª¸æËßÁ´½Ó³ÌÐò£¬ÄãÁ´½ÓµÄobjectµÄÃüÃû·½Ê½£¬Ëü¾Í»á°ïÄã×ö²»Ò»ÑùµÄ²éÕÒ£¬´Ó¶øÕÒµ½C»òÕßC++ÀïÃæµÄº¯ÊýÁË¡£
±ÈÈ磺
ÒªÈÃC++Äܹ»µ÷ÓÃCµÄº¯Êý£º
main.cc
extern "C"
{
int func(int i) ......
extern³ýÁËÄܹ»ÓÃÓÚÉùÃ÷±äÁ¿£¬ÒѾÔÚÍⲿ±»¶¨Ò壬²»ÓÃÖØÐ¶¨ÒåºÍ·ÖÅäÄÚ´æ¿Õ¼ä£¬»¹¿ÉÒÔÔÚC++ÓëC½øÐÐÏ໥º¯Êýµ÷Ó÷½Ãæ»áÓкܴóµÄÓô¦¡£
Ê×ÏÈ£¬ÎÒÃÇÀ´¿´Ò»Ï£¬ÎªÊ²Ã´C++ºÍCÓïÑÔ²»ÄÜÏ໥½øÐк¯Êýµ÷Óãº
±àдÈçϵÄÔ´Îļþ£º
int func(int i)
{
return 1;
}
·Ö±ð´æÎªtest.cc,test.c£¬·Ö±ð½øÐбàÒëÉú³ÉobjectÎļþ£º
g++ -c test.cc -o testcc
gcc -c test.c -o testc
ʹÓÃnmÃüÁî²é¿´Éú³ÉµÄobjectÎļþµÄ²»Í¬ÔÚÄĸöµØ·½£º
nm testcc
00000000 T _Z4funci
U __gxx_personality_v0
nm testc
00000000 T func
¿´³öÀ´Á˰ɣ¬C++±àÒëÆ÷°Ñ²ÎÊýÐÅÏ¢±àÒëºó·Åµ½Á˺¯ÊýµÄ¶ÔÏóÃû×ÖÀïÃæ£¨ÎªÁËʵÏÖ¶à̬£©£¬ËùÒÔ²»ÄÜ»¥ÏàÖ±½Óµ÷Óá£
ÖªµÀÁËÔÒò£¬½â¾öµÄ°ì·¨×ÔÈ»¾ÍÓÐÁË£¬Ö»Òª¸æËßÁ´½Ó³ÌÐò£¬ÄãÁ´½ÓµÄobjectµÄÃüÃû·½Ê½£¬Ëü¾Í»á°ïÄã×ö²»Ò»ÑùµÄ²éÕÒ£¬´Ó¶øÕÒµ½C»òÕßC++ÀïÃæµÄº¯ÊýÁË¡£
±ÈÈ磺
ÒªÈÃC++Äܹ»µ÷ÓÃCµÄº¯Êý£º
main.cc
extern "C"
{
int func(int i) ......