Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.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++;应用 我对C++很陌生,我遇到了一个我无法通过阅读文档解决的问题。 我想在我的C++应用程序中嵌入脚本语言。这种语言可以是javascript、lua,最好是python < >我不想寻找像Boo.python/SWIG这样的东西,它能够将我的C++函数/类封装到Python接口上,而不是一个 PythOnLyEdjaType和AyReTurnReftTyasAsValuy(MyOxCad);代码>函数_C++_Python_Scripting_Embedding - Fatal编程技术网

将脚本语言集成到C++;应用 我对C++很陌生,我遇到了一个我无法通过阅读文档解决的问题。 我想在我的C++应用程序中嵌入脚本语言。这种语言可以是javascript、lua,最好是python < >我不想寻找像Boo.python/SWIG这样的东西,它能够将我的C++函数/类封装到Python接口上,而不是一个 PythOnLyEdjaType和AyReTurnReftTyasAsValuy(MyOxCad);代码>函数

将脚本语言集成到C++;应用 我对C++很陌生,我遇到了一个我无法通过阅读文档解决的问题。 我想在我的C++应用程序中嵌入脚本语言。这种语言可以是javascript、lua,最好是python < >我不想寻找像Boo.python/SWIG这样的东西,它能够将我的C++函数/类封装到Python接口上,而不是一个 PythOnLyEdjaType和AyReTurnReftTyasAsValuy(MyOxCad);代码>函数,c++,python,scripting,embedding,C++,Python,Scripting,Embedding,我有一大堆包含几个整数的结构: struct my_integers { int a; int b; int c; int d; int e; }; 现在我想用这些整数做一些数学运算,例如: i.a = i.c * i.e; 我想做的数学在将来会发生很大的变化,我需要其他人,我可以在不访问C++代码的情况下改变数学。 我在考虑这样的代码结构: 我初始化我的结构并用起始值填充它 我加载一个外部python函数,比如“my_python_function”

我有一大堆包含几个整数的结构:

struct my_integers {
    int a;
    int b;
    int c;
    int d;
    int e;
};
现在我想用这些整数做一些数学运算,例如:

i.a = i.c * i.e;
我想做的数学在将来会发生很大的变化,我需要其他人,我可以在不访问C++代码的情况下改变数学。 我在考虑这样的代码结构:

  • 我初始化我的结构并用起始值填充它
  • 我加载一个外部python函数,比如“my_python_function”,它将结构作为参数,并在返回它之前对它进行数学运算
  • 我得到的结构类似于
    I=my\u python\u function\u cppwrapper(I)
  • 这样可能吗?我为此进行了大量的搜索,但我唯一能找到的是包装器,它提供C++ +-Python(或者其他方式)功能,而不需要与变量交互。 我真的非常感谢您的帮助,

    Robin。

    嵌入JavaScript引擎怎么样,比如?

    如果您只想从C/C++运行Python脚本,那么使用。在C/C++代码中:

    PyRun_SimpleString("import math; x = math.sqrt(2 * 2)");
    

    <> P>对于更复杂的事情,你必须查看API文档,但这很简单。

    < Python文档在C或C++应用程序中有一个页面。

    < P>为什么不使用Booost?Python?您可以将您的数据类公开给Python并执行所描述的脚本/函数。

    不要忘记嵌入式脚本语言的老爹——tcl


    TCL有一个漂亮的C++包装器(基于Booj.python建模),它使得调用和调用回调到代码的琐碎性

    LUA工作也相当好,特别是因为它的小,是ANSI C兼容的,具有低内存足迹以及一个伟大的维基和消息列表。如果您需要更高的速度,可以使用x86 32位和64位jit版本(luajit)。绑定可以通过一系列工具/库来完成,比如swig或lunar(wiki列出了它们)。我能看到的唯一问题是绑定结构成员,以便它们可以直接引用(即:结构成员=4),尽管它可以用可获得的变量和设置方法绑定到变量名

    < p>来设置,但是您可以说,您没有在Python接口中寻找包裹C++函数/类的东西,但是如果你希望Python代码能够引用C++ <代码MyOxTigss<代码>结构,那就是在Python接口中封装C++类。当然,您可以随意包装任意多或任意少的类-在本例中,您可以包装
    my_integers
    ,然后您可以使用
    my_integers

    进行操作。对于您描述的简单的事情,您可以为自己的“小语言”实现一个解释器。你甚至可以称之为“罗宾”语

    我建议使用作为内部脚本引擎。实现只需要几行代码,虽然很轻,但该语言有足够的能力。所以不需要TCL。您不妨看看Python,C++中的集成相当简单,因为存在一个“<强> <强>实现”便于集成。
    但根据应用程序的不同,我仍然推荐Lua。

    为什么不使用Boost.Python?它能让你做你想做的事。非常感谢,这就是我一直在寻找的。当我浏览Boost.Python时,我一定错过了这一节。这对我来说不太合适,因为我需要传递和提取变量,但感谢您的评论:)我想我会坚持使用Python,但我可能会在下一个项目中使用V8。谢谢你的提示,我唯一能想到的javascript引擎就是spidermonkey。