我将Lua嵌入到C ++应用程序中。
我有一些模块(现在,简单的.lua脚本),我想以编程方式加载,因为引擎正在启动,因此当引擎启动时,模块可用于没有它们的脚本必须在脚本顶部包含一个require'xxx'。
为了做到这一点,我需要能够以编程方式(即C ++结束),要求引擎加载模块,作为初始化的一部分(或之后不久)。
任何人都知道我该怎么做?
答案 0 :(得分:4)
最简单的方法是在项目中添加和编辑linit.c
的副本。
答案 1 :(得分:3)
嗯,我只是使用简单的方法:我的C ++代码只是调用Lua的require函数来预加载我想要预加载的Lua脚本!
// funky = require ("funky")
//
lua_getfield (L, LUA_GLOBALSINDEX, "require"); // function
lua_pushstring (L, "funky"); // arg 0: module name
err = lua_pcall (L, 1, 1, 0);
// store funky module table in global var
lua_setfield (L, LUA_GLOBALSINDEX, "funky");
// ... later maybe handle a non-zero value of "err"
// (I actually use a helper function instead of lua_pcall
// that throws a C++ exception in the case of an error)
如果你有多个模块要加载,当然,把它放在循环中......:)