python導(dǎo)入模塊方法 怎樣在python程序中嵌入C程序片段?
怎樣在python程序中嵌入C程序片段?如果想在C/C中嵌入Python,相對(duì)簡(jiǎn)單。你需要的是添加Python 包含文件目錄和lib文件目錄到VC中。讓 讓我們看看如何在C/C中嵌入Python。在
怎樣在python程序中嵌入C程序片段?
如果想在C/C中嵌入Python,相對(duì)簡(jiǎn)單。你需要的是添加Python 包含文件目錄和lib文件目錄到VC中。讓 讓我們看看如何在C/C中嵌入Python。
在VC6.0下,打開工具-gt選項(xiàng)-gt目錄-gt顯示目錄,將Python安裝目錄下的inlude目錄添加到inlude文件項(xiàng),將libs目錄添加到庫(kù)文件項(xiàng)。
在VC2005下,打開工具-gtoptions-gt項(xiàng)目和解決方案-gtVC目錄,然后做同樣的工作。
代碼如下:
在調(diào)試狀態(tài)下執(zhí)行時(shí)出錯(cuò)無(wú)法找到python 31 _ file "。后來(lái)發(fā)現(xiàn)debug下生成需要python31_ file,否則只能在release下生成。
一個(gè)
2
三
四
五
六
七
八
#包含ltpython.hgt
int main()
{
Py_Initialize()
PyRun _ SimpleString(打印hi,python!)
Py_Finalize()
返回0
}
Py_Initialize函數(shù)的原型是:void Py_Initialize()。
在C/C中嵌入Python時(shí)必須使用這個(gè)函數(shù),它初始化Python解釋器,必須在使用其他Python/C API之前調(diào)用??梢允褂肞y_IsInitialized函數(shù)來(lái)判斷初始化是否成功,如果成功則返回True。
pyron _ simple string函數(shù)的原型是int pyron _ simple string(const char * command),用來(lái)執(zhí)行一段Python代碼。
注意:語(yǔ)句之間需要保持縮進(jìn)嗎?
Py_Finalize函數(shù)的原型是void Py_Finalize(),用來(lái)關(guān)閉Python解釋器,釋放解釋器占用的資源。
PyRun _ SimpleFile函數(shù)可用于運(yùn)行。腳本文件。該函數(shù)的原型如下:
int pyron _ simple FILE(FILE * FP,const char *filename)
其中fp是指向打開文件的指針,filename是要運(yùn)行的python腳本的名稱。但是因?yàn)檫@個(gè)功能是visual studio官方發(fā)布的。
編譯,如果使用其他版本的編譯器,F(xiàn)ILe定義可能因版本而崩潰。同時(shí),為了簡(jiǎn)單起見,可以用下面的方法代替這個(gè)函數(shù):pyron _ simple string(execfile( ; ))//使用execfile運(yùn)行python文件。
Py_BuildValue()用于將數(shù)字和字符串轉(zhuǎn)換成Python中相應(yīng)的數(shù)據(jù)類型(在C語(yǔ)言中,所有Python類型都聲明為PyObject類型),函數(shù)原型如下:
Py object * Py _ build value(const char * format,…..)
PyString_String()用于將PyObject*類型的變量轉(zhuǎn)換成C語(yǔ)言可以處理的char*類型。具體原型如下:
char * py String _ String(py object * p)
Python如何嵌入C/C 進(jìn)行開發(fā)?
你說的是在C/C程序中調(diào)用Python。這很容易實(shí)現(xiàn)。只需要在頭文件中引入Python.件,然后在編譯時(shí)鏈接到Python庫(kù)即可。下面我簡(jiǎn)單介紹一下。以Linux系統(tǒng)為例,感興趣的朋友可以試試:
01安裝python-devel插件首先安裝python-devel插件,里面有C/C程序調(diào)用python的頭文件和庫(kù)文件,在編寫和編譯程序的時(shí)候會(huì)用到。安裝時(shí),只需輸入命令 "yum install-y python-devel "直接在終端。默認(rèn)情況下,安裝Python2。如果需要安裝Python3.x,運(yùn)行命令 "yum install-y python "。
02C/C程序調(diào)用Python插件安裝完成后,我們可以直接編寫C/C程序調(diào)用Python。測(cè)試代碼如下。這里我簡(jiǎn)單地輸出一個(gè)Python語(yǔ)句。基本思路是先初始化,再調(diào)用Python,最后結(jié)束。整個(gè)過程非常簡(jiǎn)單易懂:
寫入完成后,wq保存程序,然后運(yùn)行命令 "gcc -lpython2.7測(cè)試在終端中(這里用你的C/C文件代替),程序就可以正常編譯了。運(yùn)行效果如下,符合預(yù)期:
當(dāng)然也可以直接調(diào)用py文件(腳本),傳入?yún)?shù),得到返回結(jié)果。這里我簡(jiǎn)單地寫了一個(gè)加法求和函數(shù),輸入兩個(gè)參數(shù),返回一個(gè)結(jié)果:
C/C調(diào)用代碼如下?;玖鞒毯椭耙粯?。首先初始化,然后加載模塊,調(diào)用函數(shù),傳入?yún)?shù),最后得到執(zhí)行結(jié)果。代碼量多一點(diǎn),但也不難理解。:
至此,我們已經(jīng)完成了在C/C程序中對(duì)Python的調(diào)用。總的來(lái)說,整個(gè)過程很簡(jiǎn)單。只要你有一定的C/C基礎(chǔ),熟悉上面的例子和代碼,很快就能掌握。Windows環(huán)境類似,也需要導(dǎo)入相應(yīng)的頭文件和庫(kù)。網(wǎng)上也有相關(guān)教程和資料,非常詳細(xì)。有興趣的可以搜一下。希望以上分享的內(nèi)容能對(duì)你有所幫助,也歡迎大家提出意見和評(píng)論進(jìn)行補(bǔ)充。