2013-10-23 75 views
3

我想從C函數中獲取Lua中的幾個參數。 我試圖推LUA堆棧上的幾個參數:返回來自lua的幾個參數C函數

static int myFunc(lua_State *state) 
{ 
    lua_pushnumber(state, 1); 
    lua_pushnumber(state, 2); 
    lua_pushnumber(state, 3); 

    return 1; 
} 

,並調用它在Lua是這樣的:

local a,b,c = myFunc() 

不幸的是B和C的值是零。我不想爲我需要的每個值編寫函數,但要利用Luas功能從函數中檢索多個參數。

回答

6

C函數的返回值是返回值的數量。

更改爲return 3;,你很好走。

在這裏,有來自編程在Lua參考:

static int l_sin (lua_State *L) { 
    double d = lua_tonumber(L, 1); /* get argument */ 
    lua_pushnumber(L, sin(d)); /* push result */ 
    return 1; /* number of results */ 
} 
+0

哦,謝謝。我認爲這只是一個狀態,如果函數調用沒問題。 – Objective

+2

@Objective我謙卑的建議是開始檢查引用,而不是下一次的猜測:)。 –

+5

@目標,請參閱http://www.lua.org/manual/5.2/manual.html#lua_CFunction。 – lhf