将脚本语言集成到C++应用程序中

Rob*_*bin 8 c++ python scripting embedding

我是C++的新手,我遇到了一个我无法通过阅读文档来解决的问题.

我想在我的c ++应用程序中嵌入一个脚本语言.该语言可以是javascript,lua或者最好是python.

我不是在寻找像Boost.Python/swig这样的东西,能够将我的c ++函数/类包装到python接口,而是一个python_evaluate_and_return_result_as_variable("my_code");函数.

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

struct my_integers {
    int a;
    int b;
    int c;
    int d;
    int e;
};
Run Code Online (Sandbox Code Playgroud)

现在我想用这些整数做一些数学运算,例如:

i.a = i.c * i.e;
Run Code Online (Sandbox Code Playgroud)

我想要做的数学将来会发生很大变化,我需要其他人才能在不访问c ++代码的情况下更改数学.

我正在考虑这样的代码结构:

  1. 我初始化我的结构并用起始值填充它
  2. 我加载了一个外部python函数,让我们说"my_python_function",它将struct作为参数,并在返回之前对它进行数学运算.
  3. 我得到了我的结构 i = my_python_function_cppwrapper(i)

有可能吗?我搜索了很多内容,但我似乎唯一能找到的包装器提供了c ++ - > python(或其他方式)functionallity而没有真正与变量交互.


罗宾,我真的很感谢任何帮助.

Jon*_*rdy 8

Python文档有一个关于在C或C++应用程序中嵌入Python的页面.


Dav*_*rle 8

为什么不使用Boost.Python?您可以暴露你的数据类Python和描述执行脚本/功能在这里.


Ros*_*ght 6

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

PyRun_SimpleString("import math; x = math.sqrt(2 * 2)");
Run Code Online (Sandbox Code Playgroud)

对于更复杂的事情,您将不得不查看API文档,但它非常简单.