lua 调用c++

1.简单情况,就是符合lua_CFunction 的函数

首先注意这个宏定义

#define lua_register(L,n,f) (lua_pushcfunction(L, (f)), lua_setglobal(L, (n)))


#define lua_pushcfunction(L,f)    lua_pushcclosure(L, (f), 0)
            

2.不规则的函数调用

如果需要向lua注册一个非lua_CFunction类型的函数,需要: 
1. 为该函数实现一个封装调用。 
2. 在封装调用函数中从lua栈中取得提供的参数。 
3. 使用参数调用该函数。 

4. 向lua传递其结果。

    typedef int (*lua_CFunction)(lua_State *L); 

必须要这样的函数,所以要包装他

void wrap_func(lua_State *L)
{

}

你可能感兴趣的:(lua 调用c++)