Private Function f(ByVal hState As Long, ByVal x As Long) As String
    Dim z As String
    Dim hRet As Long
    hRet = lua_getglobal(hState, "f")
    hRet = lua_pushnumber(hState, x)
    hRet = lua_pcall(hState, 1, 1, 0)
    If hRet <> 0 Then Debug.Print "error lua_pcall:" & hRet
    z = lua_tostring(hState, -1)
    hRet = lua_pop(hState, 1)
    f = z
End Function
Public Function AddFunc()
    Dim hState As Long, hRet As Long
    hState = lua_open
    If hState <> 0 Then
        hRet = luaopen_base(hState)
        hRet = luaL_openlibs(hState)
        hRet = luaopen_string(hState)
        hRet = luaL_dofile(hState, App.Path + "\test.lua")
        If hRet = 0 Then
            Debug.Print f(hState, 2)
        Else
            Debug.Print "luaL_dofile:" & hRet
        End If
        lua_close hState
        hState = 0
    End If
End Function之前vbgood上有实现异步回调的例子,应该现在的这种调用方式用得多些
另外mdlLua.bas相信很多地方都有,百度下好了