注意:要将python的库添加添加进来,把python27.dll放到exe的同级目录下
#include<QPython>
……
……
double RansomApp::getResult()
{
//初始化python模块
Py_Initialize();
if(!Py_IsInitialized())
{
printf("Initialize fail error code:%d",GetLastError());
return 0;
}
//导入python模块
PyRun_SimpleString("import sys");
PyRun_SimpleString("sys.path.append('C:icedxu')");
PyObject *pModule = PyImport_ImportModule("myResult");
if(!pModule)
{
printf("PyImport_ImportModule myResult fail error code:%d",GetLastError());
Py_Finalize();
return 0;
}
PyObject *pFunction = PyObject_GetAttrString(pModule,"readResult");
if(!pFunction)
{
printf("PyObject_GetAttrString readResult fail error code:%d",GetLastError());
Py_Finalize();
return 0;
}
PyObject *pArgs;
//传一个参数过去
pArgs = PyTuple_New(1);
//放置传入的形参,类型说明:
//s 字符串 , 均是C 风格的字符串
//i 整型
//f 浮点数
//o 表示一个 python 对象
//第二个参数是传过去的形参
PyTuple_SetItem(pArgs,0,Py_BuildValue("s","record"));
//调用readResult函数
PyObject *pReturn = PyObject_CallObject (pFunction,pArgs);
if(!pReturn )
{
printf("PyObject_CallObject fail error code:%d",GetLastError());
Py_Finalize();
return 0;
}
double res = PyFloat_AsDouble(pReturn); //返回的是浮点型
qDebug()<<QString::number(res,10,7);
//结果、进制、保留几位小数
Py_Finalize();
return res;
}