python與C++混合編程

python與C++混合編程

ID:37903583

大?。?.80 MB

頁(yè)數(shù):10頁(yè)

時(shí)間:2019-06-02

python與C++混合編程_第1頁(yè)
python與C++混合編程_第2頁(yè)
python與C++混合編程_第3頁(yè)
python與C++混合編程_第4頁(yè)
python與C++混合編程_第5頁(yè)
資源描述:

《python與C++混合編程》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。

1、普通方式一、環(huán)境搭建1.安裝python2.6(python3.xx版本編譯失敗,未找到原因)。2.配置vs2008項(xiàng)目(python自帶的python26.dll為release版本,所以vs2008項(xiàng)目也必須調(diào)整為release,但是通過(guò)設(shè)置也可以對(duì)release進(jìn)行調(diào)試,如果需要debug版本可以從網(wǎng)上下載已有的python26_d.dll和python26_d.lib,也可以下載python源碼自己編譯。)① C/C++---->常規(guī)--->附件庫(kù)包含目錄,加入python頭文件目錄,如下圖:② 連接器--->常規(guī)--->附件庫(kù)目錄。加入python庫(kù)文件目錄,如下圖:③ 

2、連接器--->輸入--->附加依賴項(xiàng)。加入python庫(kù)文件名,如下圖:二、代碼實(shí)現(xiàn)1.C++調(diào)用python① 高層次嵌入python(所謂的高層次嵌入主要是指程序與腳本間沒(méi)有交互)#includeintmain(){Py_Initialize();/*Python解釋器初始化*/PyRun_SimpleString("print'hi,python!'");/*運(yùn)行python字符串*/Py_Finalize();/*結(jié)束Python解釋器,釋放資源*/return0;}① 低層次嵌入pyton,可以交互。但是只限python的基本類型數(shù)據(jù)(整型、浮點(diǎn)型、字

3、符串、元組、列表和字典)。C++代碼:#include#includeintmain(intargc,char*argv[]){PyObject*modulename,*module,*dic,*func,*args,*rel,*list;char*funcname1="sum";inti;Py_ssize_ts;printf("-==在C中嵌入Python==-");/*Python解釋器的初始化*/Py_Initialize();if(!Py_IsInitialized()){printf("初始化失敗!");return-1;}/*導(dǎo)

4、入Python模塊,并檢驗(yàn)是否正確導(dǎo)入*/modulename=Py_BuildValue("s","pytest");/*pytest參數(shù),為python腳本,此處的意思是導(dǎo)入當(dāng)前路徑下名稱為pytest.py的python腳本文件*/module=PyImport_Import(modulename);if(!module){printf("導(dǎo)入pytest失敗!");return-1;}/*獲得模塊中函數(shù)并檢驗(yàn)其有效性*/dic=PyModule_GetDict(module);if(!dic){printf("錯(cuò)誤!");return-1;}/*獲得sum函數(shù)地址并驗(yàn)證

5、*/func=PyDict_GetItemString(dic,funcname1);if(!PyCallable_Check(func)){printf("不能找到函數(shù)%s",funcname1);return-1;}/*構(gòu)建列表*/list=PyList_New(5);printf("使用Python中的sum函數(shù)求解下列數(shù)之和");for(i=0;i<5;i++){printf("%dt",i);PyList_SetItem(list,i,Py_BuildValue("i",i));}printf("");/*構(gòu)建sum函數(shù)的參數(shù)元組*/args=PyTuple_N

6、ew(1);PyTuple_SetItem(args,0,list);/*調(diào)用sum函數(shù)*/PyObject_CallObject(func,args);/*釋放資源*/Py_DECREF(list);Py_DECREF(args);Py_DECREF(module);/*結(jié)束Python解釋器*/Py_Finalize();printf("按回車鍵退出程序:");getchar();return0;}Python代碼,pytest.py文件內(nèi)容。importmath#導(dǎo)入python自帶math庫(kù),可用于簡(jiǎn)單的數(shù)學(xué)計(jì)算defsum(p1):#定義sum函數(shù)count=len(

7、p1)sum=0foriinrange(count):#求數(shù)組中所有元素的和sum+=p1[i]print(sum)1.Python調(diào)用C++(使用python中的ctypes模塊可以很方便的調(diào)用windows的dll(也包括linux下的so等文件))fromctypesimport*dll=CDLL("add.dll")printdll.Add(1,102)結(jié)果:103利用boost庫(kù)中的,boost.python方式一、環(huán)境搭建1.下載boost庫(kù),自己編譯,或

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。