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/去下载你想要的那个版本。

    02

    下载下来后无需安装,直接配环境变量。

    03

    配在Path下面,打开系统命令执行程序,其实就是cmd。

    04

    输入lua,看到版本号之后就证明成功了。

    05

    开始执行你的Lua文件,把你的文件准备完毕后。
    进入cmd。

    06

    输入 lua+空格+你的lua文件名 就可以了,记得要加上lua ,不然window就相当于帮你双击了这个文件而已,Lua就帮你执行输出

以上是关于c++调lua时怎么检查lua的bug的主要内容,如果未能解决你的问题,请参考以下文章

lua 与 c++或者c 交互的底层原理谁能解释一下?最最底层的,为啥它们调用C或者C++的函数?

如何使用 lua 检查 Roblox 中是不是存在对象?

静态检查lua语法工具luacheck

lua重复执行一段代码

扩展 Lua:检查传递给函数的参数数量

检查目录是不是存在于lua中?