В настоящее время я использую luabind, в частности https://github.com/rpavlik/luabind, поскольку официальный выпуск устарел и больше не компилируется с последней версией boost.
У меня очень странная проблемачто я не могу найти нигде в сети.Мне удалось свести случай к очень простому сценарию.
В одном модуле у меня будет:
luabind::object value;
void functionA() {
lua_pushstring(L,"yo");
luabind::object temp(luabind::from_stack(L,-1));
value = temp;
}
В другом модуле у меня будет:
void functionB() {
printf("My Value: %s\n",luabind::object_cast<const char*>(value));
printf("My Original value type: %d\n",luabind::type(value));
value.push(L);
luabind::object a1(luabind::from_stack(L,-1));
printf("My Copy value type: %d\n",luabind::type(a1));
}
Когда я сделаю функции A и functionB доступными из lua и вызову их последовательно, результат будет:
My Value: yo
My Original value type: 4
My Copy value type: 0
Как вы можете видеть, объект все еще ссылается на то, что luabind может напечатать.Но когда я пытаюсь поместить его в стек и создать новый объект из объекта стека, это приведет к нулевому значению.
Это происходит только в этом конкретном случае.Когда я помещаю все в одну функцию, она работает нормально.Когда я добавлю код в функции того же модуля, он будет работать нормально.Я еще не создал отдельный тестовый проект, но я не могу думать о том, чтобы что-то мешало в моем коде, функции вызываются в прямой последовательности из lua.
Я что-то не так делаю?Или это ошибка?И если это ошибка, почему я никогда не слышал о чем-то подобном?