• lua学习笔记1


    lua中调用c的函数

    #include <stdio.h>
    #include <string.h>
    #ifdef __cplusplus  
    extern "C" {
    #include <lua.h>
    #include <lualib.h>
    #include <lauxlib.h>
    }
    #else  
    #include <lua.h>
    #include <lualib.h>
    #include <lauxlib.h>
    #endif  
    static int l_testluaCFun(lua_State *L)
    {
        double d = lua_tonumber(L, 1);
        lua_pushnumber(L, d);
        return 1;
    }
    static int add2(lua_State* L)
    {
        //检查栈中的参数是否合法,1表示Lua调用时的第一个参数(从左到右),依此类推。
        //如果Lua代码在调用时传递的参数不为number,该函数将报错并终止程序的执行。
        double op1 = luaL_checknumber(L, 1);
        double op2 = luaL_checknumber(L, 2);
        //将函数的结果压入栈中。如果有多个返回值,可以在这里多次压入栈中。
        lua_pushnumber(L, op1 + op2);
        //返回值用于提示该C函数的返回值数量,即压入栈中的返回值数量。
        return 1;
    }
    const char* testfunc = "print(add2(1.0,2.0))";
    int main()
    {
        lua_State* L = luaL_newstate();
        luaL_openlibs(L);
        lua_pushcfunction(L, l_testluaCFun);
        lua_setglobal(L, "testluaCFun");
        lua_register(L, "add2", add2);
        luaL_dofile(L, "E:\Sublime_lua\1.lua");
        if (luaL_dostring(L, testfunc))
            printf("Failed to invoke.
    ");
        system("pause");
        lua_close(L);
        return 0;
    }
  • 相关阅读:
    Ubuntu上安装RabbitMQ
    解决tfs工作区绑定问题
    ubuntu装个nginx
    supervisor执行dotnet
    Validate + Boostrap tooltip 表单验证示例
    ASP.NET下跨应用共享Session和使用Redis进行Session托管
    IE下将网页拷贝到剪贴板
    js格式化json格式的日期
    js 时间戳转换
    Windows服务简单使用
  • 原文地址:https://www.cnblogs.com/huoxl/p/4074819.html
Copyright © 2020-2023  润新知