Это происходит потому, что webroot среды отличается от текущей папки css. Вам нужно изменить webroot или переместить папку css в текущую webroot. Обычно папка wwwroot устанавливается в окружении webroot
Итак, вам нужно заполнить вектор и отправить его в Lua. Ниже приведен пример кода. Приложения - это std :: list .
typedef std::list<std::string> Applications;
Я создаю таблицу и заполняю ее данными из моего списка.
int ReturnArray(lua_State* L) {
lua_createtable(L, applications.size(), 0);
int newTable = lua_gettop(L);
int index = 1;
Applications::const_iterator iter = applications.begin();
while(iter != applications.end()) {
lua_pushstring(L, (*iter).c_str());
lua_rawseti(L, newTable, index);
++iter;
++index;
}
return 1;
}
В результате у меня остается массив в стеке. Если бы он был возвращен в Lua, то я мог бы написать следующее:
for k,v in ipairs( ReturnArray() ) do
print(v)
end
Конечно, пока это просто дает мне Lua-массив строк . Чтобы получить массив объектов Lua , мы просто немного подправим ваш метод:
S32 LuaRobot::findItems(lua_State *L)
{
range = getIntFromStack(L, 1); // Pop range from the stack
thisRobot->findObjects(fillVector, range); // Put items in fillVector
// <<<< Create list of items, return it to lua >>>>
lua_createtable(L, fillVector.size(), 0);
int newTable = lua_gettop(L);
for(int i=0; i < fillVector.size(); i++) {
TestItem* item = fillVector[i];
item->push(L); // put an object, not a string, in Lua array
lua_rawseti(L, newTable, i + 1);
}
return 1;
}
Работает отлично. Чтобы пояснить другим, кто читает это, метод
item->push(L)
равен
void push(lua_State *L) { Lunar<TestItem>::push(L, this); }
. Инкапсулируя это в методе, можно сделать findItems независимым от того, что он находит.
Спасибо за помощь!