來CSDN的時候,剛剛接觸Python,那時候對Python的嵌入部分高度興趣,只是一直沒有時間來弄清其面紗,因此也一直沒有使用嵌入的功能,另一個原因是我還沒有真正用Python寫過一個正式的有用點的東西,不過,現在回過頭來繼續看這一部分,發現還是挺簡單的。以前想把這部分翻譯出來,可是由於時間原因,也沒有那精力,所以這裡我會將我所探究的每個Python/C嵌入部分函數都用執行個體來說明,我想看代碼比我解釋要通俗易懂。
再說helloworld之前,先不得不提下嵌入的配置問題。
步驟:
1:請到官網下載python的安裝程式,安裝python(我想這步有點多餘,不過還是寫上吧)
2:接著你可能還需要下載python(與安裝版本相同)原始碼,因為我們需要在debug下編譯連結產生對應的debug庫,若你能在網上找到別人已經編譯好的庫,你也可以直接用別人的。這樣得到2個debug版本的.lib和.dll
3:將python目錄下的include檔案夾下的檔案移到編譯系統的include中,然後將release和debug版本的.lib和.dll放到指定的檔案夾中(lib放到編譯系統lib,dll放到windows/system32/)
4:好了,配置就此完成了。
來看代碼:
#include "python/python.h" //我是將python那些標頭檔放在我自己建的名為python的檔案夾中
int main(int argc,char** argv)
{
Py_Initialize();//該函數啟動python解譯器,算是初始化
////////////////////////
//載入檔案的方式運行指令,FILE是C標準庫stdio.h檔案中的一個結構,習慣C語言的應該很熟悉(不過我還是第一次使用,汗...)
FILE * fr;
fopen_s(&fr,"test.txt","r");
PyRun_SimpleFile(fr,"test.txt");
fclose(fr);
//直接運行指令,指令都是字串,注意3.1.1版的python必須加上小括弧
PyRun_SimpleString("print('Hello world,I am python!')");
///////////////////////
Py_Finalize(); //該函數關閉python解譯器,算是掃尾
return 0;
}
//附帶test.txt
/*
from time import time,ctime
print('Today is', ctime(time()))
*/