注意最好配置的32位python,配置成64位的python运行不了,这块我不确定是不是因为我的编译器是32位的原因;
Linker->input->additional Dependencies 最后面添加
D:/Users/Administrator/AppData/Local/Programs/Python/Python35-32/libs/python35.lib
把python文件夹中的dll文件复制到与执行程序同一个文件夹中
#include
PyObject* m_pModule;
PyObject* m_pFunc;
PyObject* m_pargs;
PyObject *pReturn=NULL;
Py_Initialize(); //初始化
PyRun_SimpleString("import sys");
PyRun_SimpleString("sys.path.append('./')");//这一步很重要,修改Python路径
m_pModule = PyImport_ImportModule("Calculate");//这里是要调用的文件
m_pFunc = PyObject_GetAttrString(m_pModule, "Calculate_feature");//这里是要调用的函数名
m_pargs = PyTuple_New(6);
//构建参数tuple
PyTuple_SetItem(m_pargs, 0,Py_BuildValue("s",pFileName));
PyTuple_SetItem(m_pargs, 1,Py_BuildValue("s",pFileXml));
PyTuple_SetItem(m_pargs, 2,Py_BuildValue("i",m_nStation));
PyTuple_SetItem(m_pargs, 3,Py_BuildValue("d", m_fImageSize));
PyTuple_SetItem(m_pargs, 4,Py_BuildValue("s", m_cNowTime));
PyTuple_SetItem(m_pargs, 5,Py_BuildValue("d", m_fMeanYesterdayCoverage));
//调用函数,得到返回值
pReturn=PyObject_CallObject(m_pFunc, m_pargs);
float fCoverage;
if (NULL != pReturn)
{
PyArg_Parse(pReturn, "f", &fCoverage);
}
Py_Finalize();//调用Py_Finalize,这个根Py_Initialize相对应的。
python 返回的是numpy.float64的数据。