Python±Ê¼Ç£¨¶þ£©——pythonµ÷ÓÃC/C++Ä£¿é
ǰһƪ½²Á˼òµ¥µÄC/C++µ÷ÓÃPython½Å±¾Ä£¿é£¨.py£©¡£¼ÈÈ»ÊÇÓÃÓÚÖî¶àÓÎÏ·³ÌÐòµÄ½Å±¾ÓïÑÔ£¬Äǿ϶¨ÊÇȱ²»ÁË»¥µ÷£¨ÀñÉÐÍùÀ´£©¡£Òò´Ë£¬±¾Æª½²Ò»¸ö¼òµ¥µÄpythonµ÷ÓÃC/C++дµÄDLLÄ£¿é£¬¶ÔPython½øÐй¦ÄÜÀ©Õ¹¡£ÕâÀïдһ¸ö¼òµ¥µÄÀý×Ó£¬Ö÷Òª¾ÍΪÁËÁ˽âÏÂÕâôÓÃPythonÀ´µ÷ÓÃC/C++дµÄDLL¿â¡£ºÃÁË£¬ÇÐÈëÕýÌ⣺
Ê×ÏÈ£¬ÎÒÊÇÓÃVS2003½¨µÄÒ»¸öDLL¹¤³Ì£¬½«DLL¹¤³ÌÊôÐÔÀïÃæµÄÊä³öÎļþµÄ(.dll)¸ÄΪ(.pyd)¡£µ±È»Ò²¿ÉÒÔ½«Éú³ÉºóµÄDLLÀ©Õ¹Ãû¸ÄΪ.pyd¡£ºÇºÇ£¡ÃâµÃ´ó¼ÒÒÔΪËüºÜÉñÃØ£¨VC»¹ÄÜÉú³É.pyd¿â£¿ÕâÖÖÒÉÎÊ£¡£©ºÃ£¬Ö±½ÓÌù´úÂë:
#include <Python.h>
int cmd( const char *arg )
{
int n = system( arg );
return n;
}
static PyObject * wrap_cmd_fun( PyObject *self, PyObject *args )
{
const char * command;
if ( !PyArg_ParseTuple( args, "s", &command ) )
return NULL;
int n = cmd( command );
return Py_BuildValue( "i", n );
}
static PyMethodDef MyCppMethods[] =
{
{ "MyCppFunc", wrap_cmd_fun, METH_VARARGS, "Execute a shell command." },
{ NULL, NULL, 0, NULL }
};
PyMODINIT_FUNC initMyFirstPythonModule( void )
{
PyObject *m = Py_InitModule( "MyFirstPythonModule", MyCppMethods );
if (m == NULL)
return;
}
Õâ¸öʵÀýºÜ¼òµ¥£¬Ê×ÏÈÊÇPy_InitModuleÓÃÓÚ³õʼ»¯ÔÚPython½Å±¾ÖÐÒªimportµÄÄ£¿é£¬ÕâÀïµÄÄ£¿éÃûÊÇ£ºMyFirstPythonModule¡£ÎÒÃÇÔÚPythonÖн«Ê¹ÓÃimport MyFirstPythonModule À´ÔØÈëÕâ¸öÄ£¿é¡£ÕâÀïÎÒÃǽ«MyCppMethods×÷Ϊģ¿éÒªµ÷Óõķ½·¨£¬ËüÊÇÒ»¸öPyMethodDef½á¹¹¡£ÎÒÃÇ¿ÉÒÔ¿´µ½Õâ¸ö½á¹¹µÄÊý×鶨Ò壬{ "MyCppFunc", wrap_cmd_fun, METH_VARARGS, "Execute a shell command." }, ºìÉ«µÄ¾ÍÊÇÎÒÃÇÔڽű¾ÀïÃæÒªµ÷Óõĺ¯ÊýÃû×Ö£¬Ëü±»Ó³ÉäΪwrap_cmd_fun£¬µ±ÔÚPython½Å±¾Öе÷ÓÃMyCppFuncʱ½«»áµ÷ÓÃwrap_cmd_funº¯Êý¡£µÚÈý¸öMETH_VARARGS³ÉÔ±±íʾµ÷Ó÷½Ê½£¬¿ÉÒÔÓûòÔËËãÁ¬½Ó¼¸¸öµ÷Ó÷½Ê½¡£µÚËĸö³ÉÔ±ÊÇÒ»¸ö·½·¨
Ïà¹ØÎĵµ£º
ÔÚÍøÉÏ¿´µ½ÁËÕâÆªÎÄÕ£¬·Ç³£²»´í£¬»ñÒæ·Ëdz£¬ÓÚÊÇת¹ýÀ´£¬Ï£ÍûÄܶԴó¼ÒÓÐËùñÔÒæ¡£ÎÄÕÂÔ×÷Õߣºantigloss http://free3.e-168.cn/antigloss/
ºÜ¶àÈËÉõÖÁÊÐÃæÉϵÄһЩÊé¼®£¬¶¼Ê¹ÓÃÁËvoid main( ) £¬ÆäʵÕâÊÇ´íÎóµÄ¡£C/C++ ÖдÓÀ´Ã»Óж¨Òå¹ývoid main( ) ¡£C++ Ö®¸¸ Bjarne Stroustrup ÔÚËûµ ......
ºÜÆæ¹Ö£¬ÒÔǰһֱÒÔΪC++ÊǼæÈÝCµÄ£¬µ«ÊÇ£¬½ñÌìÓÃlex&yaccÉú³ÉµÄC´úÂë¿ÉÓÃͨ¹ýGCCµÄ±àÒ룬
µ«ÊÇÔõô¶¼Í¨²»¹ýG++µÄ±àÒ룬¶øÆä´íÎóºÜ¶à£¬ÓпÉÄÜÊÇlex&yaccÉú³ÉµÄC´úÂëÌ«ÀÏÁË£¬£¬£¬
ÎÒÊÇÕâÑù½â¾öµÄ
°Ñlex&yaccÉú³ÉµÄ´úÂë Óà GCC -c ±àÒë³É lex.o µÄÄ¿±êÎļþ¡£È»ºó g++ main.cpp lex.o ,¾ÍOKÁË
¼ÇµÃ£º ÔÚ main. ......
C
ÓïÑÔËùÓи´ÔÓµÄÖ¸ÕëÉùÃ÷£¬¶¼ÊÇÓɸ÷ÖÖÉùÃ÷ǶÌ×¹¹³ÉµÄ¡£ÈçºÎ½â¶Á¸´ÔÓÖ¸ÕëÉùÃ÷ÄØ£¿ÓÒ×ó·¨ÔòÊÇÒ»¸ö¼ÈÖøÃûÓÖ³£Óõķ½·¨¡£²»¹ý£¬ÓÒ×ó·¨ÔòÆäʵ²¢²»ÊÇC
±ê×¼ÀïÃæµÄÄÚÈÝ£¬ËüÊÇ´ÓC
±ê×¼µÄÉùÃ÷¹æ¶¨ÖйéÄɳöÀ´µÄ·½·¨¡£C
±ê×¼µÄÉùÃ÷¹æÔò£¬ÊÇÓÃÀ´½â¾öÈçºÎ´´½¨ÉùÃ÷µÄ£¬¶øÓÒ×ó·¨ÔòÊÇÓÃÀ´½â¾öÈçºÎ±çʶһ¸öÉùÃ÷µÄ£¬Á½Õß¿ ......
C++ÓëJavaµÄÓï·¨Çø±ð
Ê×ÏÈ£¬Á½¸ö´óµÄ²»Í¬ÊÇÖ÷º¯ÊýºÍÔõÑù±àÒëµÄ²»Í¬£¬½ÓÏÂÀ´ÊÇÐí¶àСµÄÇø±ð¡£
main º¯Êý
C++
//×ÔÓɸ¡¶¯µÄº¯Êý
int main( int argc, char* argv[])
{
printf( "Hello, world" );
}
Java
// ÿ¸öº¯Êý¶¼±ØÐëÊÇÒ»¸öÀàµÄÒ»²¿·Ö;µ±java <class>ÔËÐÐÊÇÒ»¸öÌØ¶¨ÀàµÄÖ÷º¯Êý»á±»µ÷ ......