CÖÐÈçºÎµ÷ÓÃC++º¯Êý
CÖÐÈçºÎµ÷ÓÃC++º¯Êý?
ǰÕó×Ó±»Îʼ°Ò»¸öÔÚCÖÐÈçºÎµ÷ÓÃC++º¯ÊýµÄÎÊÌ⣬µ±Ê±¼òµ¥»Ø´ðÊǽ«º¯ÊýÓÃextern "C"ÉùÃ÷£¬µ±±»Îʼ°ÈçºÎ½«ÀàÄÚ³ÉÔ±º¯ÊýÉùÃ÷ʱ£¬Ò»Ê±ÓïÈû£¬ºóÀ´ÍøÉϲéÁËÏ£¬ÍøÉÏÓÐÒ»·ÒëC++Ö®¸¸µÄÎÄÕ¿ÉÒÔ×÷Ϊ½â´ð£¬ËìÄÃÀ´Markһϡ£
½« C++ º¯ÊýÉùÃ÷Ϊ``extern "C"''£¨ÔÚÄãµÄ C++ ´úÂëÀï×öÕâ¸öÉùÃ÷£©£¬È»ºóµ÷ÓÃËü£¨ÔÚÄãµÄ C »òÕß C++ ´úÂëÀïµ÷Óã©¡£ÀýÈ磺
// C++ code:
extern "C" void f(int);
void f(int i)
{
// ...
}
È»ºó£¬Äã¿ÉÒÔÕâÑùʹÓà f()£º
/* C code: */
void f(int);
void cc(int i)
{
f(i);
/* ... */
}
µ±È»£¬ÕâÕÐÖ»ÊÊÓÃÓڷdzÉÔ±º¯Êý¡£Èç¹ûÄãÏëÒªÔÚ C Àïµ÷ÓóÉÔ±º¯Êý£¨°üÀ¨Ð麯Êý£©£¬ÔòÐèÒªÌṩһ¸ö¼òµ¥µÄ°ü×°£¨wrapper£©¡£ÀýÈ磺
// C++ code:
class C
{
// ...
virtual double f(int);
};
extern "C" double call_C_f(C* p, int i) // wrapper function
{
return p->f(i);
}
È»ºó£¬Äã¾Í¿ÉÒÔÕâÑùµ÷Óà C::f()£º
/* C code: */
double call_C_f(struct C* p, int i);
void ccc(struct C* p, int i)
{
double d = call_C_f(p,i);
/* ... */
}
Èç¹ûÄãÏëÔÚ C Àïµ÷ÓÃÖØÔØº¯Êý£¬Ôò±ØÐëÌṩ²»Í¬Ãû×ֵİü×°£¬ÕâÑù²ÅÄܱ» C ´úÂëµ÷Óá£ÀýÈ磺
// C++ code:
void f(int);
void f(double);
extern "C" void f_i(int i) { f(i); }
extern "C" void f_d(double d) { f(d); }
È»ºó£¬Äã¿ÉÒÔÕâÑùʹÓÃÿ¸öÖØÔØµÄ f()£º
/* C code: */
void f_i(int);
void f_d(double);
void cccc(int i,double d)
{
f_i(i);
f_d(d);
/* ... */
}
×¢Ò⣬ÕâЩ¼¼ÇÉÒ²ÊÊÓÃÓÚÔÚ C Àïµ÷Óà C++ Àà¿â£¬¼´Ê¹Äã²»ÄÜ£¨»òÕß²»Ï룩ÐÞ¸Ä C++ Í·Îļþ¡£
¸Ã·ÒëµÄÎĵµBjarne StroustrupµÄÔÎÄÁ´½ÓµØÖ·ÊÇ
http://www.research.att.com/~bs/bs_faq2.html#callCpp
Ïà¹ØÎĵµ£º
¼Ìǰƪ¡¶Import Module¡·£¨http://blog.csdn.net/xiadasong007/archive/2009/09/02/4512797.aspx£©£¬¼ÌÐø·ÖÎöǶÈ벿·Ö»ù´¡ÖªÊ¶¡£Õâ´Î²»¶à˵£¬ÓÐʲôÎÊÌâ¼ÇµÃ¶à²éÓ¢ÎÄ×ÊÁÏ£¬¹úÄÚµÄÕâ·½ÃæÖªÊ¶ÉÙ
»¹ÊÇÀ´¿´´úÂ룬дÍêÎÒ¾Í˯¾õÁË~
#include "python/python.h"
#include <iostream>
using namespace std;
int ......
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include ".\sqlite3_lib\sqlite3.h"
static int _callback_exec(void * notused,int argc, char ** argv, char ** aszColName)
{
int i;
for ( i=0; i<argc; i++ )
......
Delphi Óë C/C++ Êý¾ÝÀàÐͶÔÕÕ±í
DelphiÊý¾ÝÀàÐÍC/C++
ShorInt
8λÓзûºÅÕûÊý
char
Byte
8λÎÞ·ûºÅÕûÊý
BYTE,unsigned short
SmallInt
16λÓзûºÅÕûÊý
short
Word
16λÎÞ·ûºÅÕûÊý
unsigned short
Integer,LongInt
32λÓзûºÅÕûÊý
int,long
Cardinal,LongWord/DWORD
32λÎÞ·ûºÅÕûÊý
unsigned long
Int6 ......
ÒýÑÔ
¡¡¡¡Ö¸ÕëÊÇC/C++ÓïÑÔµÄÌØÉ«£¬¶øÊý×éÃûÓëÖ¸ÕëÓÐÌ«¶àµÄÏàËÆ£¬ÉõÖÁºÜ¶àʱºò£¬Êý×éÃû¿ÉÒÔ×÷ΪָÕëʹÓá£ÓÚÊǺõ£¬ºÜ¶à³ÌÐòÉè¼ÆÕ߾ͱ»¸ãºýÍ¿ÁË¡£¶øÐí¶àµÄ´óѧÀÏʦ£¬ËûÃÇÔÚCÓïÑԵĽÌѧ¹ý³ÌÖÐÒ²´íÎóµÃ¸øÑ§Éú½²½â£º"Êý×éÃû¾ÍÊÇÖ¸Õë"¡£ºÜÐÒÔË£¬ÎҵĴóѧÀÏʦ¾ÍÊÇÆäÖÐÖ®Ò»¡£Ê±ÖÁ½ñÈÕ£¬ÎÒÈÕ¸´Ò»ÈյؽøÐÐ×ÅC/C++ÏîÄ¿µÄ¿ª·¢£¬¶øÉí±ß» ......
»ùÓÚS3C2440µÄLinuxÄÚºËÒÆÖ²ºÍyaffs2ÎļþÏµÍ³ÖÆ×÷ ÊÕ²Ø
LinuxÄÚºËÒÆÖ²ºÍ¸ùÎļþÏµÍ³ÖÆ×÷
µÚÒ»ÕÂ ÒÆÖ²ÄÚºË... 2
1.1 LinuxÄں˻ù´¡ÖªÊ¶... 2
1.1.1 Linux°æ±¾... 2
1.1.2 ʲôÊDZê×¼ÄÚºË... 2
1.1.3 Linux²Ù×÷ϵͳµÄ·ÖÀà... 3
1.1.4 linuxÄں˵ÄÑ¡Ôñ... 4
1.2 LinuxÄÚºËÆô¶¯¹ý³Ì¸ÅÊö... 5
1.2.1 ......