Я делаю ниже в приложении C++/Objective-C для загрузки сценария lua. Прекрасно работает, lua_getglobal успешно получает значение «testnum». Однако значение никогда не изменяется при обновлении скрипта во время запуска приложения и в следующий раз, когда я пройду через эту часть пути кода.Как изменить сценарии Lua во время выполнения сценария запуска/перезагрузки?
L = luaL_newstate();
luaL_openlibs(L);
lua_settop(L, 0);
int err;
NSString * luaFilePath = [[NSBundle mainBundle] pathForResource:@"Test" ofType:@"lua"];
err = luaL_loadfile(L, [luaFilePath cStringUsingEncoding:[NSString defaultCStringEncoding]]);
err = lua_pcall(L, 0, 0, 0);
if (0 != err) {
luaL_error(L, "error: %s",
lua_tostring(L, -1));
return;
}
lua_getglobal(L, "testnum");
int num = lua_tointeger(L, -1);
Lua файл (Test.lua) просто
testnum = 100
Я меняю значение testnum, но она всегда остается 100 (или то, что было установлено на на запуск) в приложение C++/Objective-C. Я даже могу полностью удалить testnum var, и все равно 100, а lua_getglobal не жалуется (кроме случаев, когда я это делаю при запуске), значение num будет таким, каким оно было при запуске основного приложения. Что необходимо для перезагрузки сценария и получения любого последнего номера во время работы приложения.
Я получаю только путь к файлу с помощью NSBundle, то есть для заполнения luaFilePath. Это не должно меняться. Файл luaL_loadfile все еще загружает файл. –
На самом деле вы правы, это приводит к созданию системы сборки пакетов Xcode/iOS. Файл, который я редактирую, не тот, который загружается - он загружает тот из пакета приложений. Хорошо, что у меня есть причина сейчас, но не знаю, как это исправить. –
На самом деле достаточно просто, по крайней мере, при работе на Mac с помощью симулятора. Просто измените переменную luaFilePath прямо там, где lua-файл находится на машине. Протестировано и работает. Это все, что меня интересует, так как на устройстве у меня не будет никаких изменений во время работы. Отлично, большое спасибо Джону. –