Я пишу базовую систему сценариев, использующую lua в C ++.Одна из моих функций склеивания вызывается из этого:
lua_register(luaVM, "openFile", l_dial.l_specifyF);
И кодируется следующим образом:
static int l_specifyF(lua_State* luaVM) {
const char* c = lua_tostring(luaVM, -1);
cDialogManager::getSingletonPtr()->clearVector();
try{
luaL_dofile(luaVM, c);
}
catch(...) {
cout << "Unable to open file" << endl;
luaL_dofile(luaVM, "startup.lua");
}
return 1;
}
Когда я вызываю его в моем приложении, он работает 100%, если я вызываюфайл из локального каталога, например openFile("somefile.lua")
или openFile("someotherfile.lua")
, но происходит сбой при вызове файлов, находящихся во внешних папках, таких как openFile("scripts/ohdear.lua")
.
Обратите внимание , что этот действительно действительно работает в некоторых случаях, что только добавляет путаницы.Есть ли для этого причины?Как я могу исправить свое приложение, чтобы использовать файлы из внешних каталогов?