这个呢,其实很简单,工程中,其实已经给我们留下了接口,我们只需要看看就知道了:
看到这里就差不多知道了,我是这么做的:
auto engine = LuaEngine::getInstance();
lua_State* L = engine->getLuaStack()->getLuaState();
lua_register(L, "hello_LuaToC", hello_LuaToC);
这几句我加在了register_all_packages函数中,其实加在哪里都行。
为了方便管理,我建议新建一个文件用来注册函数,我新建了一个文件 test_lua_bind 文件,并且引用它:
test_lua_bind .h头文件如下:
test_lua_bind .cpp如下:
代码贴出来吧:
extern "C" {
#include "lua.h"
#include "lualib.h"
}
int hello_LuaToC(lua_State *L);
#include "test_lua_bind.h"
int hello_LuaToC(lua_State *L)
{
int number = lua_tonumber(L, 1);
number = number + 1;
lua_pushnumber(L, number);
return 1;
}
到了这里c++的部分就算完成了,注册也完成了,只等待我们去调用了:
好了,调用结束,执行以下看一下结果:
如果还不懂原理,推荐一下更详细的文章: