使用C++和Lua无法加载脚本的lual_dofile();。

大家好,我正在尝试让以下代码运行起来:

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;

**//Lua解释器**
lua_State  *L = lua_open();

**//打开Lua库**
luaL_openlibs(L);

**//运行Lua脚本**
status = luaL_loadfile(L,"Test.lua");

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

}

这里是 test.lua 文件:

print"Whats your name?"

function sleep(n)
end

但是这并不起作用 :(

lual_dofile(L,"Test.lua");

整个程序编译通过,但却没有执行脚本或者显示 Lua 脚本运行的任何视觉反馈。有人遇到过这个问题吗?以及任何关于为什么会出现这个问题的知识?

原文链接 https://stackoverflow.com/questions/7892762

点赞
stackoverflow用户734069
stackoverflow用户734069

你似乎不明白一些事情。

luaL_loadfile 会从文件中加载脚本,对其进行编译,但它不会运行它。它只会将其推入 Lua 栈中,这样你就可以根据需要运行它。

luaL_dofile 会从文件中加载脚本,对其进行编译,并运行它,因此弹出栈中的脚本。

在发生错误的情况下,luaL_loadfile 将返回一个错误代码,解释是什么类型的错误。如果有错误,它还会将一个错误消息推入 Lua 栈。如果没有错误发生,它将返回 0。

同样,如果发生错误,luaL_dofile 将返回 1,并且错误消息将在 Lua 栈上。

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

2011-10-25 17:21:05