我目前在使用Luabind將Lua腳本化AI與C++遊戲進行接口方面存在問題。Luabind中的聲明失敗
我在循環內調用一個更新函數(每幀一次),該函數從Luabind中註冊的C++函數中檢索信息。
我的問題如下: 經過一個變量,不可預測的時間,在Luabind中有一個斷言失敗導致中止。 錯誤總是出現在/usr/include/luabind/wrapper_base.hpp:124中,而在Lua的 內下降。
你有什麼想法可以做什麼? 對於我的測試,C++和LUA中的被調用的函數總是相同的。
有關該問題的更多細節:
角落找尋斷言的內容未能在wrapper_base.hpp
typedef typename boost::mpl::if_<boost::is_void<R>, luabind::detail::proxy_member_void_caller<boost::tuples::tuple<BOOST_PP_ENUM(BOOST_PP_ITERATION(), LUABIND_TUPLE_PARAMS, _)> >
, luabind::detail::proxy_member_caller<R, boost::tuples::tuple<BOOST_PP_ENUM(BOOST_PP_ITERATION(), LUABIND_TUPLE_PARAMS, _)> > >::type proxy_type;
// Comments removed
lua_State* L = m_self.state();
m_self.get(L);
assert(!lua_isnil(L, -1));
detail::do_call_member_selection(L, name);
if (lua_isnil(L, -1))
{
lua_pop(L, 1);
throw std::runtime_error("Attempt to call nonexistent function");
}
// push the self reference as the first parameter
m_self.get(L);
// now the function and self objects
// are on the stack. These will both
// be popped by pcall
return proxy_type(L, args);
確切的錯誤
bomberman: /usr/include/luabind/wrapper_base.hpp:124: typename boost::mpl::if_<boost::is_void<T>, luabind::detail::proxy_member_void_caller<boost::tuples::tuple<boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type,
boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> >, luabind::detail::proxy_member_caller<R, boost::tuples::tuple<boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type,
boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> > >::type luabind::wrap_base::call(const char*, luabind::detail::type_<Derived>*) const [with R = void]:
Assertion `!(lua_type(L, (-1)) == 0)' failed.
Aborted (core dumped)
對答案感興趣 – Intrepidd 2011-06-04 12:49:58
請您在系統上發佈wrapper_base:124的幾行內容嗎?也是完整的錯誤信息文本。 – 2011-06-04 16:10:11
你解決了嗎?我有完全相同的錯誤。 – Ponkadoodle 2012-02-16 18:42:16