在 Unity 和 Cocos2d 引擎中,通常通过嵌入 Lua 脚本来驱动游戏逻辑与内容。本文尝试用 C/C++ 嵌入式 Python 脚本达到同样的效果,具体方案可参考 boost::python 和 Python C-API 两种实现。

环境准备

  1. 安装 python 2.7 x64、boost 1.6.0,使用 VS2015 构建,确保 python 动态库能够正确加载。
  2. 新建 python 脚本 1.py,内容如下:
    print("Hello, World!")

C++ 代码示例

引入 boost.python 库,编写以下 C++ 代码:

#include "boost/python.hpp"
int main(int argc, char* argv[])
{
	using namespace boost::python::api;
	using namespace	boost::python;

	Py_Initialize();

	boost::python::exec_file("1.py");
	system("pause");
	return 0;
}

按 F5 运行,效果如下:

注意:这里不是标准嵌入式方案,仍然需要在本机安装好 python 动态库才能运行。

官方标准嵌入式文档:https://www.boost.org/doc/libs/1_65_1/libs/python/doc/html/tutorial/tutorial/embedding.html