Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
调用C++;通过Python脚本执行函数 我有一个场景,我在C++类中有一些函数,我希望能够用Python脚本调用它们。假设我有一个函数 void greet(_msg); std::cout >> _msg >> std::endl;_C++_Python_Qt_Boost Python_Word Wrap - Fatal编程技术网

调用C++;通过Python脚本执行函数 我有一个场景,我在C++类中有一些函数,我希望能够用Python脚本调用它们。假设我有一个函数 void greet(_msg); std::cout >> _msg >> std::endl;

调用C++;通过Python脚本执行函数 我有一个场景,我在C++类中有一些函数,我希望能够用Python脚本调用它们。假设我有一个函数 void greet(_msg); std::cout >> _msg >> std::endl;,c++,python,qt,boost-python,word-wrap,C++,Python,Qt,Boost Python,Word Wrap,我希望能够通过自定义Python调用调用它,并向它传递参数,例如使用 saySomething("Hello") 作为一个.py文件,我希望它调用greet函数并将“Hello”作为参数传递 我知道这是一个经过了深入讨论的课题,我在C++中嵌入了Python的研究,我已经成功地使用标准的Python /C API从Python脚本中读取值,并在C++中运行Python中的函数并传递参数,但我似乎无法理解如何实现这个特定的结果。 我看过ctypes和各种包装库,如boost:python或swi

我希望能够通过自定义Python调用调用它,并向它传递参数,例如使用

saySomething("Hello")
作为一个.py文件,我希望它调用greet函数并将“Hello”作为参数传递


<>我知道这是一个经过了深入讨论的课题,我在C++中嵌入了Python的研究,我已经成功地使用标准的Python /C API从Python脚本中读取值,并在C++中运行Python中的函数并传递参数,但我似乎无法理解如何实现这个特定的结果。
我看过ctypes和各种包装库,如boost:python或swig,但我似乎不明白它们能在多大程度上帮助我实现我想要的目标。

你可以使用weave.inline()函数,它是scipy包的一部分,编译和执行C/C++文件,并从python脚本中获取它们的输出。

取决于您感兴趣的python版本,2.x或3.x, 阅读或的扩展和嵌入Python解释器章节。您只对扩展Python感兴趣,因此请参阅1部分。用C或C++ ++强Python提供完整的解释,说明如何实现你需要的,以便能够调用Python脚本中C++实现的函数。
当然,有许多库和生成器允许您为Python包装C/C++API(例如or),但是您的案例听起来很简单,为了学习,最好熟悉Python C API。即使您使用这些工具,您也必须经常深入了解Python C API,或者至少理解它。

我最近需要做这件事。Python实现了我们所期望的功能(以及更多功能),但就我个人而言(尽管我非常喜欢Boost),我发现为了获得一个功能而不得不将Boost库的一半拖入有点过火。SWIG对我来说也不是一个真正的选项,因为当类结构发生变化时,代码生成总是很难维护(别误会,这些都是很好的解决方案,只是不是我想要的)

所以,留给我的唯一事情就是从第一原则(Python/CAPI)实现它。亨斯,“ECS:Python”诞生了。EX:Python(用Python嵌入C++脚本)是一个简单的C++ Python包装库,专门为C++开发人员设计的。它允许您将对象从C++应用程序公开到嵌入式Python解释器,以便于交互式脚本编写,并且它非常轻量级且易于使用。 它是免费的(BSD)和开源的。如果您对这里感兴趣,它是:

“从C++运行Python函数”这是什么意思?如果想将C/C++屏蔽为Python API,可以应用C/C++的Python绑定的基本规则,还有一个Boosi::Python库,在编写从C++代码开始的Python API时更容易处理。抱歉,它不清楚,我想要的是能够有一个Python脚本,它调用C++类的特定函数,能够传递参数给它。或多或少像一个GUI,但是通过python脚本而不是按钮来完成。所以您正在寻找这个,或者boost::python(可能更容易),并且这个问题的答案可以是一个很好的起点。无论如何,你想为C++代码生成Python API,就是这样,只需遵循官方指南或使用这个LIBS。