2013-09-29 26 views
2

它只是崩潰,我需要你解決它。提前致謝。Lua C API:使用lua_pushcfunction推送功能不起作用

typedef lua_CFunction luaFunc; 

int Caller(lua_State* luaVM) 
    luaFunc Func = lua_tocfunction(luaVM, 1); 

    lua_pushcfunction(luaVM, Func); 
    lua_call(luaVM, 0, 0); 
    return 0; 
} 

在Lua中它應該看起來像:

function Caller(f) 
    f() 
end 
+1

你傳遞給'Caller'什麼樣的價值?它必須是C函數,而不是Lua函數。 –

+1

從函數中刪除'lua_tocfunction'和'lua_pushcfunction'行,以便能夠調用傳入'Caller'的任何參數。 –

回答

3

的Lua代碼的等效

function Caller(f) 
    f() 
end 

int Caller(lua_State* luaVM)  
    lua_call(luaVM, 0, 0); 
    return 0; 
} 
0

我沒有測試過,但它應該看起來像下面這樣:
在C函數

{ 
    ... 
    lua_getglobal(luaVM, "Caller"); 
    lua_pushcfunction(luaVM, CallbackFunction) 
    lua_call(luaVM, 0, 0) 
    ... 
} 

int CallbackFunction(lua_State* luaVM) 
{ 
    ... 
}