2013-04-21 68 views
0

我正在使用Visual C++ 2012並試圖爲Lua編寫一個c擴展。目前,我設計了一個函數原型:如何獲得c中的lua參數?

lib.myfunc(number, {a=1,b=2,c=3},{d=4,e=5,...}) 

沒有關於「MYFUNC」功能3個參數,第一個參數是一個數字的整數,第二和第三個參數表類型,我需要訪問值按鍵(鍵'a','b','c'...)

我已閱讀lua手冊併爲許多教程搜索,但我仍然無法獲得它的工作。我想要一個示例C代碼做這個工作,謝謝〜

回答

1

我真的不知道luabind,所以我不知道,如果他們提供任何自己的設施來做到這一點,但在Lua你會這樣做是這樣的:

int myLuaFunc(lua_State *L) 
{ 
    int arg1 = luaL_toint(L, 1); 
    luaL_checktype(L, 2, LUA_TTABLE); //Throws an error, if it's not a table 
    luaL_checktype(L, 3, LUA_TTABLE); 

    //Get values for the first table and push it on the stack 
    lua_getfield(L, 2, "keyname"); //Or use lua_gettable 
    //Assuming it's a string, get it 
    const char *tmpstr = lua_tostring(L, -1); 

    //..... Similariliy for all the other keys 
} 

你可能想參考Lua Reference Manual來描述我使用的功能。

+0

看起來像'luaL_toint'應該是'luaL_tointeger',但它仍然幫助我很多。謝謝 – 2013-04-21 15:44:53

+0

它實際上應該是luaL_checkint。 luaL_checkinteger返回lua_Integer,而luaL_checkint返回int。 – 2013-04-21 16:22:23