c++中呼叫python指令碼的意義就不講了,至少你可以把它當成文字形式的動態鏈結庫,
需要的時候還可以改一改,只要不改變介面, c++的程式一旦編譯好了,再改就沒那麼方便了
先看python的**
**:#test function
def add(a,b):
print "in python function add"
print "a = " + str(a)
print "b = " + str(b)
print "ret = " + str(a+b)
return
def foo(a):
print "in python function foo"
print "a = " + str(a)
print "ret = " + str(a * a)
return
把上面的python**存為pytest.py
接下來是c++ 的**
**:#include "python.h"
int main(int argc, char** argv)
// 新增當前路徑
//把輸入的字串作為python**直接執行,返回0
//表示成功,-1表示有錯。大多時候錯誤都是因為字串
//中有語法錯誤。
pyrun_******string("import sys");
pyobject *pname,*pmodule,*pdict,*pfunc,*pargs;
// 載入名為pytest的指令碼
pname = pystring_fromstring("pytest");
pmodule = pyimport_import(pname);
if ( !pmodule )
pdict = pymodule_getdict(pmodule);
if ( !pdict )
// 找出函式名為add的函式
pfunc = pydict_getitemstring(pdict, "add");
if ( !pfunc || !pycallable_check(pfunc) )
// 引數進棧
pargs = pytuple_new(2);
// pyobject* py_buildvalue(char *format, ...)
// 把c++的變數轉換成乙個python物件。當需要從
// c++傳遞變數到python時,就會使用這個函式。此函式
// 有點類似c的printf,但格式不同。常用的格式有
// s 表示字串,
// i 表示整型變數,
// f 表示浮點數,
// o 表示乙個python物件。
pytuple_setitem(pargs, 0, py_buildvalue("l",3));
pytuple_setitem(pargs, 1, py_buildvalue("l",4));
// 呼叫python函式
pyobject_callobject(pfunc, pargs);
//下面這段是查詢函式foo 並執行foo
pfunc = pydict_getitemstring(pdict, "foo");
if ( !pfunc || !pycallable_check(pfunc) )
pargs = pytuple_new(1);
pytuple_setitem(pargs, 0, py_buildvalue("l",2)); //
pyobject_callobject(pfunc, pargs);
py_decref(pname);
py_decref(pargs);
py_decref(pmodule);
// 關閉python
py_finalize();
return 0;
}編譯選項, 需要手動指定python 的include 路徑, 和鏈結接路徑,
**:g++ python.cpp -o python -i/usr/include/python2.5 -l/usr/lib/python2.5 -lpython2.5
如果你的python 版本號與我的不同,請修改為你自己的版本號
C語言呼叫Python指令碼中的函式
注 本文參考了博文 python功能強大,擁有豐富的庫,可以輕而易舉的做很多用c c 等重量級語言不太方便做到的事情,因為如果在c語言中呼叫python指令碼,則會分發揮python的優點,而且很重要的一點,由於python是解釋執行,如果python中的模組發生改變,不需要重新編譯源 靈活性比c更...
黃聰 C 中呼叫python指令碼語言
1.安裝ironpython 2.建立專案 建立乙個c 的控制台應用程式。新增引用 瀏覽到ironpython的安裝目錄中,新增對ironpython.dll,microsoft.scripting.dll 兩個dll的引用。3.新增python檔案到當前的專案中 def welcome name ...
Python 呼叫shell指令碼
python呼叫shell指令碼,有兩種方法 os.system cmd 或os.popen cmd 前者返回值是指令碼的退出狀態碼,後者的返回值是指令碼執行過程中的輸出內容。實際使用時視需求情況而選擇。現假定有乙個shell指令碼test.sh bin bash 1.echo hello worl...