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

lual_dofile(); wont load script with C++ and Lua

本文关键字:c++ Lua 脚本 加载 dofile lual      更新时间:2023-10-16

你好,我想让这个代码工作

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");

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

你似乎有几件事不明白。

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

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

在错误的情况下,luaL_loadfile将返回一个错误代码,解释它是什么样的错误。如果出现错误,它还会向Lua堆栈推送一条错误消息。如果没有错误发生,则返回0。

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

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