lual_dofile();不会用C ++和Lua加载脚本

时间:2011-10-25 16:45:54

标签: c++ file lua

您好我正在尝试让此代码正常工作

extern "C"
{
#include <lua.h>
#include "lualib.h"
#include "lauxlib.h"
}

#include "glew.h"
#define GLEW_STATIC
#include "SDL/SDL.h"
#include "SDL/SDL_image.h"
#include <stdlib.h>
#include <iostream>
#include <fstream>




////////////////////////
////////////////////////
test.h
void Test(void)

{
    int status;

**//The Lua Interpreter**
lua_State  *L = lua_open();


**//Open Lua Libarys**
luaL_openlibs(L);



**//Run Lua Script**
status = luaL_loadfile(L,"Test.lua");

printf( "actually getting to this point!");
getchar();
//Close Lua
lua_close(L);



}

这名为test.lua     这是我的lua文件

print"Whats your name?"

function sleep(n)
end

这不起作用:(

lual_dofile(L, “Test.lua”);

孔程序编译但后来不执行脚本或显示运行的lua脚本的任何视觉反馈 以前有人遇到过这个问题吗?并且知道为什么?**

1 个答案:

答案 0 :(得分:8)

你似乎不理解一些事情。

luaL_loadfile从文件加载脚本,编译它,但它运行它。它只是将它推到Lua堆栈上,这样你就可以使用你认为合适的任何参数来运行它。

luaL_dofile从文件加载脚本,编译它,运行它,从而将脚本弹出堆栈。

如果出现错误,luaL_loadfile将返回错误代码,说明错误类型。如果出现错误,它还会将错误消息推送到Lua堆栈。如果没有错误发生,则返回0.

类似地,如果发生错误,luaL_dofile将返回1,并且错误消息将在Lua堆栈上。

您应该始终检查这些函数的返回值,以查看是否发生了错误,并采取相应的措施。