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

8 投票
9 回答
10334 浏览
提问于 2025-04-16 04:30

我刚开始学习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;
};

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

i.a = i.c * i.e;

我想做的数学运算将来会经常变化,我需要其他人也能在不接触C++代码的情况下修改这些运算。

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

  1. 我初始化我的结构体,并填入初始值。
  2. 我加载一个外部的Python函数,比如“my_python_function”,这个函数接受结构体作为参数,并对其进行数学运算,然后返回结果。
  3. 我像这样获取我的结构体:i = my_python_function_cppwrapper(i)

这样的事情可能吗?我在网上查了很多,但似乎只找到一些包装器,它们提供C++和Python之间的功能,而没有真正与变量进行交互。

我非常感谢任何帮助,
Robin。

9 个回答

6

如果你想在C/C++中简单地运行Python脚本,可以使用Python C API。在你的C/C++代码中:

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

如果你想做一些更复杂的事情,就需要查看API的文档,不过其实也挺简单的。

8

Python的官方文档里有一页专门讲怎么把Python嵌入到C或C++应用程序中,你可以在这里查看:嵌入Python

8

为什么不使用Boost.Python呢?你可以把你的数据类暴露给Python,并且可以执行一个脚本或函数,具体的做法可以参考这里的说明。

撰写回答