Вызов функции lua из .lua использует дескрипторы?

Я работаю над небольшим проектом, пытающимся интегрировать lua с c ++. Моя проблема, однако, заключается в следующем:

У меня есть несколько сценариев lua, давайте назовем их s1.lua s2.lua и s3.lua. Каждый из них имеет следующие функции: setVars () и executeResults ().

Теперь я могу вызывать файл lua через LuaL_dofile и сразу после использования setVars () и / или executeResults (). Однако проблема в том, что после загрузки s2.lua я больше не могу вызывать функции s1.lua. Это означало бы, что я должен повторить LuaL_dofile на s1.lua, чтобы восстановить доступ к функции, и в результате я потеряю доступ к функциям в s2.lua.

Есть ли способ просто загрузить все файлы lua подряд и впоследствии начать вызывать их функции по желанию? Что-то вроде s1-> executeResults () s5-> executeResults () s3-> setVars () и т. Д.

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

Прежде чем заполнить вектор именами файлов lua, моя функция загрузки плагина выглядит так:

void Lua_plugin::load_Plugins(){
 std::vector<std::string>::const_iterator it;
 for (it=Lua_PluginList.begin(); it!=Lua_PluginList.end(); it++){
  std::cout<<"File loading: " << *it << std::endl;
  std::string filename =  *it;
  std::string filepath = scriptdir+filename;
  if (luaL_loadfile(L, filepath.c_str()) || lua_pcall(L, 0, 0, 0)) {
   std::cout << "ScriptEngine: error loading script. Error returned was: " << lua_tostring(L, -1) << std::endl;
  }
 }
}

Чтобы было немного яснее, все, что у меня есть в .lua, примерно так:

-- s1.lua

setVars()
--do stuff
end

executeResults()
--dostuff
end

и т.д., но я хотел бы иметь возможность вызывать s1.lua setVars () и s2.lua setVars () после простой загрузки обоих в ряд.

Ответы на вопрос(3)

Ваш ответ на вопрос