lual_dofile (); не загружать скрипт с C ++ и Lua - PullRequest
3 голосов
/ 25 октября 2011

Здравствуйте, я пытаюсь заставить этот код работать

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 это мой файл Луа

print"Whats your name?"

function sleep(n)
end

это не работает: (

lual_dofile (L, "Test.lua");

дырявая программа компилируется, но затем не запускает скрипт и не отображает визуальный отклик запущенного скрипта lua кто-нибудь сталкивался с этой проблемой раньше? и есть какие-либо знания о том, почему? **

1 Ответ

8 голосов
/ 25 октября 2011

Вы, кажется, не понимаете несколько вещей.

luaL_loadfile загружает скрипт из файла, компилирует его, но не запускает его. Он просто помещает его в стек Lua, чтобы вы могли запускать его с любыми параметрами, которые вы считаете подходящими.

luaL_dofile загружает скрипт из файла, компилирует его, и запускает его, выталкивая скрипт из стека.

В случае ошибок luaL_loadfile вернет код ошибки, объясняющий, что это за ошибка. Он также помещает сообщение об ошибке в стек Lua, если есть ошибка. Если ошибок не возникает, возвращается 0.

Аналогично, luaL_dofile вернет 1, если произойдет ошибка, и сообщение об ошибке будет в стеке Lua.

Вы всегда должны проверять возвращаемое значение этих функций, чтобы увидеть, произошла ли ошибка, и действовать соответствующим образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...