将parameter passing给我的lua dll函数

我怎样才能将parameter passing给我的lua dll函数?

我做了一个简单的lua dll函数:

static int functionName(lua_State *L, int arg1, char arg2[]) { printf("running my dll:\n"); printf("passing number: %d passing string = %s",arg1,arg2); return 0; } 

并在lua中使用这个运行function:

 require "myTestDll"; myTestDll.functionName(1231544,"Hello World, I'm running my DLL."); 

但结果是,它打印错误的数字,甚至没有接近正确的string。

注册到Lua的函数必须始终具有相同的C或C ++签名: int FuncName(lua_State*); 他们可以采取或多或少的参数。

传递给注册函数的Lua参数是lua_State*一部分。 它们是Lua堆栈中的第一个值。 所以你可以调用lua_gettop来获取参数的数量。 你可以使用通常的Lua堆栈函数将它们从堆栈中取出。

例如,如果你想让你的函数有两个参数,第一个是数字,第二个是字符串,你可以这样做:

 int functionName(lua_State *L) { int arg1 = 0; const char *arg2 = NULL; size_t arg2Len = 0; //Lua strings have an explicit length; they can contain null characters. if(lua_gettop(L) != 2) { lua_pushstring(L, "Must provide two parameters to this Lua function."); lua_error(L); } arg1 = luaL_checkinteger(L, 1); arg2 = luaL_checklstring(L, 2, &arg2Len); //Do stuff with arguments. }