将脚本语言集成到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++代码的情况下改变数学。
我在考虑这样的代码结构:
I=my\u python\u function\u cppwrapper(I)
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。