导读:这篇文章和上一篇是同样性质的,只不过是分开讲方便大家逐一突破,顺带区分开。

实验环境:Visual C++ 6.0

代码:

extern C
{
    #include lua.h
    #include lualib.h
    #include lauxlib.h
}

#pragma comment(lib, lua51.lib)
lua_State *lua;


代码:

lua = lua_open ();
if(lua)
{
    luaopen_base (lua);
    luaopen_table (lua);
    luaopen_string (lua);
    luaopen_math (lua);
    luaopen_debug (lua);
    //luaopen_io (lua);
}

lua_pushcfunction(lua, Msg);
lua_setglobal(lua, Msg);
luaL_dofile(lua, test.lua); // 解释分析lua文件


然后在这个按钮响应函数上面添加一个静态函数:

int Msg(lua_State* L)
{
    // 测试第一个参数是否为字串形式,并取得这个字串
    const char *s1 = luaL_checkstring(L, 1); 
    MessageBox(NULL, s1, caption, MB_OK);
    lua_pop(lua, 1); // 清除栈里的这个字串
    lua_pushlstring(L, MsgOK!, 6); // 把返回值压进栈里
    // 这个返回是指返回值的个数
    return 1;
}


最后一步,在项目目录下新建一个文件,命名为"test.lua",然后在里面输入以下内容,然后运行程序,点击按钮你将会发现他会弹出两次对话框。

c = Msg (123);
Msg(c);