×Ô¶¯»¯²âÊÔÖÐPythonÓëC/C++µÄ»ìºÏʹÓÃ
±³¾°
ÏîÄ¿µÄ
×Ô¶¯»¯²âÊÔÖÐÒѾʹÓÃÁË»ùÓÚPython
½Å±¾µÄ¿ò¼Ü£¬×Ô¶¯»¯¹ý³ÌÖÐ×î¹Ø¼üµÄÎÊÌâ¾ÍÊÇÈçºÎʵÏÖ׮ģ¿é¡£ÔËÓÃ
Python
Ç¿´óµÄ¹¦ÄÜ£¬ÊµÏÖÈκÎ׮ģ¿é¶¼ÊÇ¿ÉÄܵ쬵«ÊÇÊÇ·ñ±ØÐëÍêȫʹÓÃ
Python
ʵÏÖÄ£¿éÂß¼£¬³É±¾ÊÇÒ»¸ö¾ö¶¨ÐÔÒòËØ¡£ÔÚ׮ģ¿éÂß¼¼òµ¥µÄÇé¿öÏ£¬Ê¹ÓÃ
Python
Ä£ÄâÄ£¿éÂß¼²»µ«Ê¹×Ô¶¯»¯²âÊԵĽṹÇåÎú£¬Ò²¾ßÓиüºÃµÄÁé»îÐÔ£¬µ«ÊÇÈç¹û׮ģ¿éÂß¼¸´ÔÓ£¬ÊµÏÖÆðÀ´¿ÉÄÜÒªºÄ·ÑºÜ´óµÄ³É±¾£¬Ò²ÈÝÒ×ÓÉÓÚ׮ģ¿éÂß¼Óëʵ¼Ê²»·ûµ¼Ö²âÊÔ½á¹û²»¿ÉÐÅ¡£ÔÚÕâÖÖÇé¿öÏ£¬Èç¹ûÄܹ»½èÓÃ
RD
¿ª·¢µÄijЩ´úÂë¶Î
/
¿â£¬½«»á¶Ô²âÊÔ×Ô¶¯»¯´øÀ´ºÜ¶àÐ§Òæ¡£
ÁíÍ⣬ÔÚPython
Öе÷ÓÃ
C/C++
´úÂëµÄ·½·¨Ò²¿ÉÄÜÓ¦ÓÃÓÚ
C/C++
¿âµÄ²âÊÔÖУ¬ÕâÖÖ²âÊÔ·½·¨µÄ¿ÉÐÐÐÔ»¹ÓдýÑо¿¡£
ÒÔÏÂ×ܽá³ö¼¸ÖÖÔÚPython
Öе÷ÓÃ
C/C++
´úÂëµÄ·½·¨
ʹÓÃctypes
Ä£¿éµ÷ÓÃ
C
¶¯Ì¬¿â
´ÓPython2.5
¿ªÊ¼£¬
Python
¿ªÊ¼Ìṩ
ctypes
Ä£¿éÀ´Ìṩ¶Ô
C
ÓïÑÔ±àÒëµÄ¶¯Ì¬¿âÎļþµÄµ÷Óá£×¢Ò⣬
ÕâÀïÌØÖ¸C
µÄ¶¯Ì¬¿â
£¬ÓÃC++
±àÒëµÄ¶¯Ì¬¿â
ctypes
ËäÈ»Äܹ»¼ÓÔØ£¬µ«µ÷ÓÃʱµÄº¯ÊýÃûÒѾÓÉÓÚ
C++
µÄÖØÔØÌØÐÔ±»¼ÓÒÔÐ޸ģ¬ÄÑÒÔµ÷ÓᣠʹÓÃ
ctypes
µ÷ÓÃ
C
¶¯Ì¬¿âµÄºÃ´¦ÔÚÓÚ²»ÓýøÐжîÍâµÄ¿ª·¢£¬¿ÉÒÔÖ±½ÓʹÓñàÒëºÃµÄ¶¯Ì¬¿â¡£
ctypes
ÌṩÁËÍêÕûµÄ
C
ÀàÐÍ·â×°£¬Ò²Ö§³Ö×Ô¶¨ÒåÀàÐÍ£¬´ó´ó¼õÉÙÔÚµ÷Óùý³ÌÖеŤ×÷Á¿¡£
ctypes
µÄʹÓúܼòµ¥£¬Ö»ÐèÊìϤ
python
·â×°Óë
C
ÖеĶÔÓ¦¹ØÏµ¼´¿É¡£ÒÔÏÂÓÃÒ»¸ö¼òµ¥µÄÀý×ÓÀ´ËµÃ÷£º
from
ctypes
import
*
#µ¼ÈëctypesÄ£¿é
libc = cdll.LoadLibrary("libc.so.6")
#¼ÓÔØlibc¶¯Ì¬¿â
str
= c_char_p('
Hello World!
')
#ʹÓÃchar *ÔÚctypesÖеĶÔÓ¦·â×°c_char_p£¬Ï൱ÓÚchar* str=”Hello World!”
libc.printf(“yell: %s\n”,
str
)
#µ÷ÓÃprintfº¯Êý
ctypesµÄ¹¦Äܵ±È»Ô¶²»Ö¹ÕâЩ£¬ÓÐÐËȤµÄͬѧ¿ÉÒԲο¼ÕâÀï
http://docs.python.org/library/ctypes.html
ʹÓÃPython
µÄÀ©Õ¹£¨
Extending
£©»úÖÆ
ctypesºÜ·½±ãµØ¿ÉÒÔµ÷ÓÃ
C
µÄ¶¯Ì¬¿â£¬µ«ÊǶÔ
C++
±àÒëµÄ¶¯Ì¬¿â£¬µ÷ÓÃÆðÀ´ºÜÀ§ÄÑ¡£ÕâÖÖÇé¿öÀûÓÃ
Python
µÄ
Extending
»úÖÆ¾Í¿ÉÒÔ½â¾ö¡£
Python
ÌṩÁËÒ»Ì×ÍêÕûµÄ¿ò¼ÜÀ´Ê¹ÓÃ
C/C++
±àдÀ©Õ¹¿â£¬¿ÉÒÔºÜÁé»îµÄ¿ª·¢
C++
À©Õ¹Ä£¿é¡£ÕâÖÖ·½·¨µÄ
Ïà¹ØÎĵµ£º
À´Ô´:
×÷Õß:
Áé½£
1.python ×Ö·û´®Í¨³£Óе¥ÒýºÅ£¨'...'£©¡¢Ë«ÒýºÅ£¨...£©¡¢ÈýÒýºÅ£¨...£©»ò£¨'''...'''£©°üΧ£¬ÈýÒýºÅ°üº¬µÄ×Ö·û´®¿ÉÓɶàÐÐ×é³É£¬Ò»°ã¿É±íʾ´ó¶ÎµÄÐðÊöÐÔ×Ö·û´®¡£ÔÚʹÓÃʱ»ù±¾Ã»Óвî±ð£¬
1.python
×Ö·û´®Í¨³£Óе¥ÒýºÅ£¨'...'£©¡¢Ë«ÒýºÅ£¨"..."£©¡¢ÈýÒýºÅ£¨"""... ......
Á´½Óָʾ·ûextern C
Èç¹û³ÌÐòԱϣÍûµ÷ÓÃÆäËû³ÌÐòÉè¼ÆÓïÑÔÓÈÆäÊÇC дµÄº¯ÊýÄÇôµ÷Óú¯Êýʱ±ØÐë
¸æËß±àÒëÆ÷ʹÓò»Í¬µÄÒªÇóÀýÈçµ±ÕâÑùµÄº¯Êý±»µ÷ÓÃʱº¯ÊýÃû»ò²ÎÊýÅÅÁеÄ˳Ðò¿ÉÄÜ
²»Í¬ÎÞÂÛÊÇC++º¯Êýµ÷ÓÃËü»¹ÊÇÓÃÆäËûÓïÑÔдµÄº¯Êýµ÷ÓÃËü
³ÌÐòÔ±ÓÃÁ´½Óָʾ·ûlinkage directive ¸æËß±àÒëÆ÷¸Ãº¯ÊýÊÇÓÃÆäËûµÄ³ÌÐòÉè¼ÆÓïÑÔ
±àдµ ......
Ref : http://www.swig.org/translations/chinese/tutorial.html
¼ÙÉèÄãÓÐһЩcÄãÏëÔÙ¼ÓPython.¡£¾ÙÀýÀ´ËµÓÐÕâôһ¸öÎļþexample.c
/* File : example.c */
#include <time.h>
double My_variable = 3.0;
int fact(int n) {
if (n <= 1) return 1;
&nbs ......
½ñÌìͻȻÏëµ½B/S½á¹¹ÀwebformÊÇÎÞ·¨È¡µÃ¿Í»§¶ËµÄMACµØÖ·ºÍÓ²¼þÐÅÏ¢µÄ£¬¾ÍÍ»·¢ÆæÏ룬ÓÃC/S½á¹¹£¬µ«ÊÇÒòΪC/S½á¹¹µÄºÜ¶àµÄ¶«Î÷²»Äܶ¯Ì¬£¬¾Í¿¼Âǵ½ÁËC/B½á¹¹
×îºó¾ö¶¨ÓÃwebservice+ALC+C/B½á¹¹ £¬´î½¨ÎÒµÄOAϵͳ
ŬÁ¦ing ......