• 全部
  • 互动交流
  • 文章分享

怎么在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();
...全文
249 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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);
回复
相关推荐
发帖
脚本语言
创建于2007-08-27

3.7w+

社区成员

JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
申请成为版主
帖子事件
创建了帖子
2005-09-28 03:42
社区公告

CSDN 脚本语言社区接受专栏投稿(专栏会在顶部创建专属你的栏目),投稿需满足以下要求:

  • 脚本语言技术相关;
  • 文章持续更新,保持活跃;
  • 内容清晰明了,干货为主;
  • 文章排版有序,有条有理。

本社区开通招聘专栏,发布招聘信息请联系版主,发布者需要保证招聘信息真实有效,CSDN 平台和版主不对招聘内容负责!

联系方式:私聊版主、发送邮件、QQ联系等均可: