当前位置: 首页 > news >正文

青苹果网站建设恢复正常百度

青苹果网站建设,恢复正常百度,唐山建设网站的网站,如何帮人做网站本文在 C 中调用 multi.py 脚本,并向它传入参数并执行,然后获得返回值并在 C 中打印结果。 目录 如何在 C 中调用 python 解析器来执行 python 代码(一)?如何在 C 中调用 python 解析器来执行 python 代码&#xff0…

本文在 C++ 中调用 multi.py 脚本,并向它传入参数并执行,然后获得返回值并在 C++ 中打印结果。

目录

  • 如何在 C++ 中调用 python 解析器来执行 python 代码(一)?
  • 如何在 C++ 中调用 python 解析器来执行 python 代码(二)?
  • 如何在 C++ 中调用 python 解析器来执行 python 代码(三)?

脚本 multi.py

def multiply(a,b):print("Will compute", a, "times", b)c = 0for i in range(0, a):c = c + breturn c

代码 main.cpp

官网代码直接复制过来,但执行总会出错:

$./a.out multi multiply 1 8
ModuleNotFoundError: No module named 'multi'
Failed to load "multi"

发现必须在 C++ 中指定 python 脚本路径才行,加上下面两行:

    PyRun_SimpleString("import sys");PyRun_SimpleString("sys.path.append('./')");

最终的 main.cpp 如下:

#define PY_SSIZE_T_CLEAN
#include <Python.h>int
main(int argc, char *argv[])
{PyObject *pName, *pModule, *pFunc;PyObject *pArgs, *pValue;int i;if (argc < 3) {fprintf(stderr,"Usage: call pythonfile funcname [args]\n");return 1;}Py_Initialize();PyRun_SimpleString("import sys");PyRun_SimpleString("sys.path.append('./')");pName = PyUnicode_DecodeFSDefault(argv[1]);/* Error checking of pName left out */pModule = PyImport_Import(pName);Py_DECREF(pName);if (pModule != NULL) {pFunc = PyObject_GetAttrString(pModule, argv[2]);/* pFunc is a new reference */if (pFunc && PyCallable_Check(pFunc)) {pArgs = PyTuple_New(argc - 3);for (i = 0; i < argc - 3; ++i) {pValue = PyLong_FromLong(atoi(argv[i + 3]));if (!pValue) {Py_DECREF(pArgs);Py_DECREF(pModule);fprintf(stderr, "Cannot convert argument\n");return 1;}/* pValue reference stolen here: */PyTuple_SetItem(pArgs, i, pValue);}pValue = PyObject_CallObject(pFunc, pArgs);Py_DECREF(pArgs);if (pValue != NULL) {printf("Result of call: %ld\n", PyLong_AsLong(pValue));Py_DECREF(pValue);}else {Py_DECREF(pFunc);Py_DECREF(pModule);PyErr_Print();fprintf(stderr,"Call failed\n");return 1;}}else {if (PyErr_Occurred())PyErr_Print();fprintf(stderr, "Cannot find function \"%s\"\n", argv[2]);}Py_XDECREF(pFunc);Py_DECREF(pModule);}else {PyErr_Print();fprintf(stderr, "Failed to load \"%s\"\n", argv[1]);return 1;}if (Py_FinalizeEx() < 0) {return 120;}return 0;
}

编译

g++ -I/usr/include/python3.6m -I/usr/include/python3.6m  -Wno-unused-result -Wsign-compare -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv   -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv  -L/usr/lib64 -lpython3.6m -lpthread -ldl  -lutil -lm  -Xlinker -export-dynamic main.cpp

执行

$./a.out multi multiply 10 8
Will compute 10 times 8
Result of call: 80

总结

和 python 交互,最繁琐的部分应该就是参数处理,本文演示了基础数据结构的输入输出。

还有几个课题留待研究:

  • 对于真实场景,需要处理复杂结构的输入输出,如向量、String、Number 等,怎么做?
  • 如何直接调用代码片段并传参,而不是脚本文件?
http://www.khdw.cn/news/65369.html

相关文章:

  • 提高网站排名怎么做谷歌推广费用多少
  • 墨刀做网站百度搜索引擎的优缺点
  • 卖线面网站优化防疫措施
  • wordpress建网站教程百度推广登录入口官网网
  • 用frontpage做网站什么是互联网销售
  • 什么是网上商店seo文章是什么意思
  • 网站开发职责网站建设全网营销
  • 做内容网站朋友圈广告投放平台
  • web程序设计asp.net实用网站开发答案百度站长平台提交网站
  • 简约型网站设计搜索引擎营销的优缺点
  • 哪里找做鸭子的网站淘宝seo 优化软件
  • cc域名做网站怎么样线上广告投放渠道
  • ps软件下载电脑版免费网站产品怎么优化
  • 重庆时时彩网站怎么做搜索引擎优化的内容有哪些
  • 上海兼职做网站网络整合营销策划书
  • 赶集网网站建设费用互联网营销模式有哪些
  • 网站开发融资网络营销推广平台
  • 黑龙江省建设网站太原seo快速排名怎么样
  • 长沙做网站seo公司关键词优化一年的收费标准
  • 建站公司见客户没话说百度收录权重
  • 给网站做压力测试搜索引擎营销的典型案例
  • 创业 做网站广告传媒公司
  • 明会红网站创建网站的软件
  • 邢台网站建设联系电话成都最新动态
  • 做珠宝商城网站百度开户是什么意思
  • wordpress如何修改用户名密码seo运营培训
  • 莆田网站建设培训qq代刷网站推广
  • 免费建立个人网站哈尔滨百度推广公司
  • 小说网站开发成本山西seo谷歌关键词优化工具
  • 新乡网站建设设计seo优化关键词0