新聞中心
這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
c++調(diào)用python詳細(xì)教程-創(chuàng)新互聯(lián)
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)行不了說明環(huá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ù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
文章題目:c++調(diào)用python詳細(xì)教程-創(chuàng)新互聯(lián)
標(biāo)題鏈接:http://www.dlmjj.cn/article/dhssge.html