ʹÓÃCÓïÑÔÀ©Õ¹Python£¨Ò»£©
¿ª·¢»·¾³£ºUbuntu9.10,python2.6,gcc4.4.11,ubuntuϵÄpythonÔËÐаüºÍ¿ª·¢°üÊÇ·Ö¿ªµÄ£¬Òò´ËÐèÒªÔÚÐÂÀûµÃÀïÃæ°²×°python-all-dev,´Ó¶ø¿ÉÒÔÔÚ´úÂëÖÐÒýÓÃpythonµÄÍ·ÎļþºÍ¿â¡£2.ÏÂÃæÊÇÒ»¸ö×î¼òµ¥µÄ¿ÉÒÔ¹©pythonµ÷ÓõÄcÀ©Õ¹Ä£¿é£¬¼ÙÉèc³ÌÐòÎļþÃûΪfoo.c:´úÂë#include <Python.h>
static PyObject* foo_bar(PyObject* self, PyObject* args) {
Py_RETURN_NONE;
}
static PyMethodDef foo_methods[] = {
{"bar",(PyCFunction)foo_bar,METH_NOARGS,NULL},
{NULL,NULL,0,NULL}
};
PyMODINIT_FUNC initfoo() {
Py_InitModule3("foo", foo_methods, "My first extension module.");
} ÎÒÃÇ¿ÉÒÔ½«ÉÏÊöÄ£¿é·Ö³É3¸ö²¿·Ö£º1£©cÄ£¿éÏë¶ÔÍⱩ¶µÄ½Ó¿Úº¯Êý¡£2£©Ìṩ¸øÍⲿµÄpython³ÌÐòʹÓõÄÒ»¸öcÄ£¿éº¯ÊýÃû³ÆÓ³Éä±í¡£3£©cÄ£¿éµÄ³õʼ»¯º¯Êý¡£Ä£¿éµÄµÚÒ»Ðн«Python.hÒýÈ뵽ģ¿éÖУ¬Õâ¸öÎļþ½«Ê¹µÃÄãµÄÄ£¿é¿ÉÒÔhook½øpythonµÄ½âÊÍÆ÷£¬´Ó¶ø¿ÉÒÔΪÍⲿµÄpython³ÌÐòËùʹÓá£cÄ£¿éÖеĺ¯ÊýÇ©ÃûÒ»°ãÓÐÏÂÁÐÈýÖÖÐÎʽ£ºPyObject* MyFunction(PyObject* self, PyObject* args);
PyObject* MyFunctionWithKeywords(PyObject* self, PyObject* args, PyObject* kw);
PyObject* MyFunctionWithNoArgs(PyObject* self); Ò»°ãÎÒÃÇʹÓõÄÊǵÚÒ»ÖÖ·½Ê½£¬º¯ÊýµÄ²ÎÊý½«»áÒ»¸öÔª×é(tuple)µÄÐÎʽ´«½øÀ´£¬Òò´ËÎÒÃÇÔÚcÄ£¿éµÄº¯ÊýÖÐÐèÒª¶ÔÆä½øÐнâÎö¡£PythonÖв»ÄÜÏócÓïÑÔÒ»ÑùÉùÃ÷Ò»¸övoidÀàÐ͵ĺ¯Êý£¬Èç¹ûÄã²»Ï뺯Êý·µ»ØÒ»¸öÖµµÄ»°£¬ÄǾͷµ»ØÒ»¸öNONE,ÔÚÕâÀïÎÒÃÇ¿ÉÒÔͨ¹ýPythonÍ·ÎļþÖеÄÒ»¸öºêPy_RETURN_NONEÀ´ÊµÏÖ¡£CÄ£¿éÖеĺ¯ÊýÃû³ÆÆäʵ¶ÔÍⲿÀ´ËµÊDz»¿É¼ûµÄ£¬Òò´Ë¿ÉÒÔËæ±ãÄãÃüÃû£¬Ò»°ãÎÒÃÇ¿ÉÒÔʹÓÃstaticº¯Êý£¨ÕâÔÚCÓïÑÔÀï±íʾÔÚµ±Ç°ÎļþÒÔÍâÊDz»¿É¼ûµÄ£©¡£±¾Îĺ¯ÊýÃüÃû·½Ê½²ÉÓÃÄ£¿éÃû¼ÓÉϺ¯ÊýÃû£¬ÀýÈçfoo_bar,Õâ±íʾÔÚÄ£¿éfooÖлáÓÐÒ»¸öbarº¯Êý¡£È»ºó¾ÍÊǺ¯ÊýÓ³Éä±íÁË£¬ËüÊÇÒ»¸öPyMethodDef½á¹¹ÌåÊý×飬struct PyMethodDef {
char* ml_name;
PyCFunction ml_meth;
&nb
Ïà¹ØÎĵµ£º
//cExample.h
#ifndef C_EXAMPLE_H
#define C_EXAMPLE_H
#ifdef __cplusplus
extern "C"
{
#endif
int add(int x, int y);
#ifdef __cplusplus
}
#endif
#endif
---------------------------------
//cExample.c
#include"cExample.h"
int add(int x, int y)
{
return x + y;
}
----------------- ......
ÈÕÖ¾¼Ç¼ÁËÕýʽִÐвâÊÔ֮ǰµÄÕû¸ö¹¤×÷¹ý³Ì£¨ÒÔʧ°Ü¾ÑéΪÖ÷£©£¬ÆäÖаüÀ¨£º²âÊÔ·½°¸µÄÖÆ¶¨£¬·½°¸µÄ¿ÉÖ´ÐÐÐÔÑéÖ¤£¬ÒÔ¼°·½°¸Ö´ÐÐʧ°ÜºóµÄÐÞ¸ÄÓëÍêÉÆ¡£´Ë´Î¹¤×÷Ϊ“ÐÔÄܲâÊÔ”·¶³ë£¬Õâ¸ö·½ÏòÒ²ÊÇÎҵļ¼Êõ¶Ì°åÖ®Ò»¡£Ì¹°×µÄ½²£¬ÒÔÎÒ¸öÈ˵ÄÄÜÁ¦¼¸ºõ²»ÄÜ×öµ½£¬Ö®ËùÒÔ½â¾ö·½°¸Äܹ»Í¨¹ý£¬ÔÚ´ËÖ÷Òª¸Ðл¿ª·¢Í¬ÊµÄÈ«Á¦Ö§³ÖºÍ ......
»Ø¹Ë֮ǰµÄƪ·ù£¬CÓïÑÔµÄÖ÷Ì岿·Ö»ù±¾ÒѾ½éÉÜÍêÁË¡£Ö®ËùÒÔûÓнéÉÜC++µÄÏà¹ØÌØÐÔÊÇÒòΪÔÚ֮ǰµÄÎÄÕÂÖÐCºÍC++ÔÚÕâЩ·½Ãæ¶¼Óй²ÐÔ£¬ËùÒÔÔÚÃæÏò¶ÔÏó֮ǰ¡£ÎÒÃÇÏȰÑÕâЩ¹²ÐÔ¸ø½éÉÜÍê¡£Ò²¾ÍÊÇ˵ÔÚ½éÉÜÃæÏò¶ÔÏó֮ǰ£¬ËùÓеÄÎÄÕ¶¼ÊÇCC++Öж¼ÄÜʹÓõġ£´ÓÕâµãÉÏÀ´¿´£¬ÏÖÔÚÕý¼«Á¦·Ü¶·ÓÚC++Õ½ÏßÉϵijõѧÕß»¹ÊǺÜÓÐÓô¦µÄ¡£
±¾Æª¼ ......
[Ô´´]Python´úÂëÄ£¿éÈȸüлúÖÆÊµÏÖ(reload)
by AKara 2009-05-17 @ http://blog.csdn.net/akara @ akaras@163.com
---------------------------------------------------------------------
¶ÔÒ»¸öÓÎÏ·À´Ëµ£¬ÎÞÂÛÊÇclient»òserver¶¼·Ç³£ÐèÒªÒ»Ì×´úÂëÈȸüеĻúÖÆ¡£
ËüÄÜ´ó´óÌá¸ß¿ª·¢Ð§ÂÊ£¬ÓÖÄܳ¬ºõÍæ ......