c调用lua 出错错误处理
c调用lua 出错异常处理
学习lua不久,遇到了问题,,请大家帮忙:
问题:访问了错误的lua函数程序崩溃的解决方法。
先上代码:
lua脚本(为了测试问题,故意写错)
c++调用一个lua,试图去访问lua函数,lua中又没有此函数,(有时会出现此问题,访问了错误的lua文件,)
在此情况下,程序会崩溃,调试环境vs2012 、 lua52.dll 、 64位win7
(访问了错误的lua文件,怎么防止程序崩溃)
先谢谢大家了
------解决思路----------------------
lua_close为什么你的程序会有两个?
在window下编程,将所有的访问lua的操作用try catch包起来,不让异常抛出,可以阻止程序崩溃。
------解决思路----------------------
lua_close(L);确实有点问题
正常的话,执行到这里就结束了:
看看错误是不是这造成的:
lua_pcall
如果是那就是你lua_close(L);造成的错误
学习lua不久,遇到了问题,,请大家帮忙:
问题:访问了错误的lua函数程序崩溃的解决方法。
先上代码:
#include <stdio.h>
#include <assert.h>
#include <exception>
extern "C" {
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
}
/*Lua解释器指针*/
lua_State* L;
int main ( int argc, char *argv[] )
{
L = luaL_newstate();
luaL_openlibs(L);
int iError = luaL_dofile(L, "test.lua");
lua_close(L);
int a = 11 ;
int b = 12 ;
(lua_getglobal(L,"add"));
if (lua_pcall(L, 0, 0, 0))
{
printf("Error calling lua function error");
}
lua_pushinteger(L,a) ;
lua_pushinteger(L,b) ;
int ret = lua_pcall(L,2,1,0) ;
if ( ret != 0 )
return 0;
printf("sum:%d + %d = %ld\n",a,b,lua_tointeger(L,-1)) ;
lua_pop(L,1);
/* 清除Lua */
lua_close(L);
getchar();
return 0;
}
lua脚本(为了测试问题,故意写错)
--变量定义
width=1 ;
height=2 ;
--lua函数定义,实现加法
function sum(a,b)
return a+b ;
end
c++调用一个lua,试图去访问lua函数,lua中又没有此函数,(有时会出现此问题,访问了错误的lua文件,)
在此情况下,程序会崩溃,调试环境vs2012 、 lua52.dll 、 64位win7
(访问了错误的lua文件,怎么防止程序崩溃)
先谢谢大家了
------解决思路----------------------
lua_close为什么你的程序会有两个?
在window下编程,将所有的访问lua的操作用try catch包起来,不让异常抛出,可以阻止程序崩溃。
------解决思路----------------------
lua_close(L);确实有点问题
正常的话,执行到这里就结束了:
if (lua_pcall(L, 0, 0, 0))
{
printf("Error calling lua function error");
}
看看错误是不是这造成的:
lua_pcall
如果是那就是你lua_close(L);造成的错误