C呼叫Python指令碼檔案裡的函式

2021-06-22 20:55:12 字數 1468 閱讀 7126

#python指令碼,存為pytest.py

def add(a,b):

print "in python function add"

print "a = " + str(a)

print "b = " + str(b)

print "ret = " + str(a+b)

return a + b

// c**調,用上面的add函式

#include

#include

#include "c:/python26/include/python.h"

#pragma comment(lib, "c:\\python26\\libs\\python26.lib")

int main(int argc, char** argv)

// 載入名為pytest的指令碼(注意:不是pytest.py)

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函式

pretval = pyobject_callobject(pfunc, pargs);

printf("function return value : %ld\r\n", pyint_aslong(pretval));

py_decref(pname);

py_decref(pargs);

py_decref(pmodule);

py_decref(pretval);

// 關閉python

py_finalize();

return 0;

}

C呼叫Python指令碼檔案裡的函式

電梯直達 1 只看該作者 倒序瀏覽 python指令碼,存為pytest.py def add a,b print in python function add print a str a print b str b print ret str a b return a b c 調,用上面的add函...

C 呼叫並執行SQL指令碼檔案

讓c 程式直接執行sql指令碼檔案,類似ssms直接開啟sql檔案並執行一樣,搜尋了一下結果還真有,不過需要借用mssql的幾個類庫及命名空間 microsoft.sqlserver.connectioninfo.dll microsoft.sqlserver.smo.dll microsoft.s...

Python編寫簡易指令碼檔案

選用了nodepad進行編寫 最後儲存成 x.py格式即可,同理記事本啊什麼的也可以,對接nodepad editplus之類 usr bin env python3 age int input age of the dog print if age 0 print this can hardly ...