python嵌入到C 中

2021-06-26 19:45:52 字數 1328 閱讀 7840

在了解下面的函式之前有必要了解一下**pyobject***指標,python裡面幾乎所有的物件都是使用這個指標來指示的。

py_initialize()&&py_finalize()

在呼叫任何python的c函式之前需要呼叫的函式,「py_initialize」是用來初始化python模組的,推測是載入初始化載入dll的。對應的在使用python模組之後用「py_finalize」來釋放模組。

pyimport_importmodule()
用來載入乙個python模組,這個模組就是一般的python檔案。這裡需要注意的是,在載入這個模組的時候會執行模組裡面所有可以執行的語句。包括import匯入語句和在函式體之外的所有語句

pyobject_getattrstring()
返回模組裡面的函式

py_buildvalue()
建立乙個引數元組,一般都是用這個函式來建立元組,然後將這個元組作為引數傳遞給python裡面的函式。

pyeval_callobject()
呼叫函式,並把「py_buildvalue」建立的元組作為引數傳遞給被呼叫的函式

下面的例項是在c++**中呼叫python的函式,傳遞引數並且獲取返回值

test.cpp**

#include 

#include

using namespace std;

int main(int argc, char* argv)

pfunc = pyobject_getattrstring(pmodule, "main");

if (!pfunc)

pparam = py_buildvalue("(s)", "hehehe");

presult = pyeval_callobject(pfunc,pparam);

if(presult)

}py_decref(pparam);

py_decref(pfunc);

py_finalize();

//cout

<< "hello"

<< endl;

return

0;}

test_python.py**

def

main

(szstring):

return ("hello", 5)

c 實現嵌入 exe檔案到程式中

其實也不算是嵌入,只是單單的將乙個exe檔案或者任何乙個型別的檔案,通過16進製制來表示。然後這個16進製制的檔案再使用的時候先生成。然後程式呼叫。cpp view plain copy print?test.cpp 定義控制台應用程式的入口點。include stdafx.h include us...

c 中嵌入python入門1

本人是用vc2003 python2.5學習的,其它的也應該差不了多少 1.開始程式設計了 include 第一步就是包含python的標頭檔案 2.看乙個很簡單的例子 1 python檔案test.py,很簡單的定義了乙個函式 filename test.py def hello print he...

c 中嵌入python入門3

c 中嵌入python入門3 這次主要講講怎麼把python中的class嵌入到c 中去。順便講講元組的操作和怎麼編譯python源 1.首先講講元組的操作 由於引數是通過元組傳進去的,所以我們不能老是通過py buildvalue這個函式來操作元組,那樣太不方便了。python提供了元組相關的操作...