在VS中匯出python第三方包
阿新 • • 發佈:2019-02-07
網上很多用VS呼叫python指令碼函式的方法,但是經過多方實驗,很少成功的,記錄成功的方法。
假如匯入的包是numpy
需要包含numpy的include和lib在環境路徑中,再包含需要的標頭檔案,假如用到array就需要包含"arrayobject.h"
然後再自己定義一個初始化的函式,如下:
int init_numpy()
{//初始化 numpy 執行環境,主要是匯入包,python2.7用void返回型別,python3.0以上用int返回型別
import_array();
}
後面再main函式中,先初始化python,再初始化需要的第三方包:
Py_Initialize();
init_numpy();
然後就可以用第三包裡的函數了,比如我需要傳陣列給我的python函式:我就用到這個函式:PyArray_SimpleNewFromData
具體為:
PyObject *pValue = NULL;
float CArrays[9] = { 1, 2, 5, 4, 7, 8, 5, 0, 0};//python中的資料型別多為float型的,所以定義為了float型。
pValue = PyArray_SimpleNewFromData(nd, Dims, NPY_FLOAT, CArrays);
這樣pvalue就是python需要的型別了,也就是array型別,可以直接傳進我的函式中
PyInit_mytest();
pyList=mytest(pValue);
本部分只是介紹實驗成功的利用第三方包來傳入陣列的方法,具體呼叫方法可以參見C++與python通訊,採用cython實現。