c++调lua时怎么检查lua的bug
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++调lua时怎么检查lua的bug相关的知识,希望对你有一定的参考价值。
一. lua调用C++在lua中是以函数指针的形式调用函数, 并且所有的函数指针都必须满足如下此种类型:
typedef int (*lua_CFunction) (lua_State *L);
也就是说, 偶们在C++中定义函数时必须以lua_State为参数, 以int为返回值才能被Lua所调用. 但是不要忘记了, 偶们的lua_State是支持栈的, 所以通过栈可以传递无穷个参数, 大小只受内存大小限制. 而返回的int值也只是指返回值的个数真正的返回值都存储在lua_State的栈中. 偶们通常的做法是做一个wrapper, 把所有需要调用的函数都wrap一下, 这样就可以调用任意的函数了.
[cpp] view plaincopy
#include<iostream>
using namespace std;
#include<stdio.h>
extern "C"
#include <lua.h>
#include <lualib.h>
#include <lauxlib.h>
//#pragma comment(lib, "lua5.1.lib")
lua_State* L;
static int average(lua_State *L)
//返回栈中元素的个数
int n = lua_gettop(L);
double sum = 0;
int i;
for (i = 1; i <= n; i++)
if (!lua_isnumber(L, i))
lua_pushstring(L, "Incorrect argument to \'average\'");
lua_error(L);
sum += lua_tonumber(L, i);
/* push the average */
lua_pushnumber(L, sum / n);
/* push the sum */
lua_pushnumber(L, sum);
/* return the number of results */
return 2;
int main (int argc,char*argv[])
/* initialize Lua */
L = lua_open();
/* load Lua libraries */
luaL_openlibs(L);
/* register our function */
lua_register(L, "average", average);
/* run the script */
luaL_dofile(L, "e15.lua");
lua_getglobal(L,"avg");
cout<<"avg is:"<<lua_tointeger(L,-1)<<endl;
lua_pop(L,1);
lua_getglobal(L,"sum");
cout<<"sum is:"<<lua_tointeger(L,-1)<<endl;
/* cleanup Lua */
lua_close(L);
return 0;
参考技术A 用一个有调试功能的LUA编译工具,比如LuaEditor。
朋友,请【采纳答案】,您的采纳是我答题的动力,如果没有明白,请追问。谢谢。本回答被提问者采纳
lua后缀文件怎么打开以及怎么使用
参考技术A- 01
首先检查自己Window下有没有安装Lua,如果没有的话http://joedf.users.sourceforge.net/luabuilds/去下载你想要的那个版本。
下载下来后无需安装,直接配环境变量。
配在Path下面,打开系统命令执行程序,其实就是cmd。
输入lua,看到版本号之后就证明成功了。
开始执行你的Lua文件,把你的文件准备完毕后。
进入cmd。
输入 lua+空格+你的lua文件名 就可以了,记得要加上lua ,不然window就相当于帮你双击了这个文件而已,Lua就帮你执行输出
以上是关于c++调lua时怎么检查lua的bug的主要内容,如果未能解决你的问题,请参考以下文章