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