怎么在Python和C++之间互相交互数据?从C++把浮点数输入,经过Python运算,浮点数输出到C++。

mybios 2005-09-28 03:42:14
我的代码如下,但是很明显得到的数据是错误的,我要求是输入一个浮点数进去(当然也可能多个),然后通过Python计算后得到一个结果(也可能多个),返回到C++中。望高人指点,谢谢!
Py_Initialize();
// Access Python's "__main__" module...
PyObject* pModule = PyImport_AddModule("__main__");
PyObject* pDict = PyModule_GetDict(pModule);
// 建立一个输入数据到字典中
PyObject* pInValue = Py_BuildValue("(f)", 456.2543f);
PyDict_SetItemString(pDict , "invalue" ,pInValue);

// 运行脚本,生成一个输出数据retvalue到字典中
PyRun_String( "retvalue=invalue * 35.43244",
Py_file_input,
pDict,
pDict
);
// 从字典中获得输出数据
PyObject* pRetValue = PyDict_GetItemString(pDict , "retvalue");
// 格式化到C++类型
double fRetValue = 0;
PyArg_Parse(pRetValue, "f", &fRetValue);
TRACE("Script's retvalue variable was set to: %.8f\n" , fRetValue);

Py_Finalize();
...全文
462 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
mybios 2005-09-29
  • 打赏
  • 举报
回复
谢谢 super852(头太晕)在群里给我解决的问题,解决方法是因为没有用tab缩进
super852 2005-09-29
  • 打赏
  • 举报
回复
另外,不应该白白的接分。
你到python.cn 加入邮件列表,去问相关问题,很快就有一堆人给你回复的。
建议使用gmail,条目比较清楚。
super852 2005-09-29
  • 打赏
  • 举报
回复
问题一会儿再看,先接分了。
我就是在QQ群里看到的,过来帮你接分的。
mybios 2005-09-28
  • 打赏
  • 举报
回复
问题解决了,但是遇到另外一个问题。
// 清空字典
PyDict_Clear(pDict);
// 建立一个输入数据到字典中
PyDict_SetItemString(pDict , "invalue" , PyFloat_FromDouble(1.345345f));
// 运行脚本,生成一个输出数据retvalue到字典中,脚本里执行后应该retvalue=0,但是却执行失败了
PyRun_String( "if invalue >= 100:\n"
"retvalue = invalue * 234;\n"
"else:\n"
"retvalue=0;\n",
Py_file_input,
pDict,
pDict
);
// 从字典中获得输出数据
PyObject* pRetValue = PyDict_GetItemString(pDict , "retvalue");
// 格式化到C++类型
double fRetValue = PyFloat_AsDouble(pRetValue);
CString strMsg;
strMsg.Format("Script's retvalue variable was set to: %.8f\n" , fRetValue);
AfxMessageBox(strMsg);

37,743

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧