1. 引入python環(huán)境的include和libs
INCLUDEPATH += D:\Python\Anaconda3\include
LIBS += -LD:\Python\Anaconda3\libs -lpython39
2. 準(zhǔn)備python腳本。注意:python腳本應(yīng)當(dāng)能在cmd獨(dú)立運(yùn)行,如果運(yùn)行不了說(shuō)明環(huán)境有問(wèn)題,調(diào)用也會(huì)失敗。python返回多個(gè)結(jié)果,采用列表。
import numpy as np
from scipy import interpolate
def fun1(a):
x = np.array([1,2,3,4,5,6,7,8,9,10])
y = np.array([1,4,9,16,25,36,49,64,81,100])
z = np.array([1,3,5,7,9,11,13,15,17,19])
f1 = interpolate.interp1d(x,y,kind='cubic')
f2 = interpolate.interp1d(x,z,kind='cubic')
return [f1(a),f2(a)]
#fun1(7.77)
3. 調(diào)用流程
#include#include//引入頭文件
using namespace std;
int main()
{
//設(shè)置PythonHome
Py_SetPythonHome(L"D:/Python/Anaconda3");
//初始化
Py_Initialize();
PyRun_SimpleString("import sys");
//設(shè)置hello.py文件的路徑。也可以直接將python文件放到debug目錄下exe文件所在地
PyRun_SimpleString("sys.path.append('D:/Qt/QtProject/helloworld')");
//指針變量
PyObject *m,*f,*args,*result;
//獲取模塊,hello為python文件名
m = PyImport_ImportModule("hello");
if(!m) cout<<"hello failed";
//獲取函數(shù),fun1為函數(shù)名
f = PyObject_GetAttrString(m,"fun1");
if(!f) cout<<"fun1() failed";
//設(shè)置參數(shù),最好傳入元組(d),不然容易報(bào)錯(cuò)
args = Py_BuildValue("(d)",7.7);
//執(zhí)行函數(shù)
result = PyObject_CallObject(f,args);
double ret,ret2;
//獲取單個(gè)值
// PyArg_Parse(result,"d",&ret);
//獲取列表值,相應(yīng)的python腳本應(yīng)當(dāng)返回列表而不是元組
ret = PyFloat_AsDouble(PyList_GetItem(result,0));
ret2 = PyFloat_AsDouble(PyList_GetItem(result,1));
cout<
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
名稱(chēng)欄目:c++調(diào)用python詳細(xì)教程-創(chuàng)新互聯(lián)
文章分享:http://www.chinadenli.net/article14/dhssge.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站營(yíng)銷(xiāo)、自適應(yīng)網(wǎng)站、網(wǎng)頁(yè)設(shè)計(jì)公司、外貿(mào)建站、軟件開(kāi)發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容