修改控件后Lua的神秘输出

修改控件后Lua的神秘输出,lua,wxwidgets,Lua,Wxwidgets,我正在使用Lua和wxLua来构建GUI。通常,当我退出应用程序时,我不会从Lua获得任何输出 然而,我只是向wxListView(称为myListView)添加了一个函数,如下所示 myListView.foo = bar function bar (self) -- do something with the wxListView end 无论我是否调用过foo(),当我退出应用程序时,我从Lua获得以下输出: ~wxLuaObject -2 1 0 如果我将作业注释掉,则在退

我正在使用Lua和wxLua来构建GUI。通常,当我退出应用程序时,我不会从Lua获得任何输出

然而,我只是向wxListView(称为myListView)添加了一个函数,如下所示

myListView.foo = bar

function bar (self)
    -- do something with the wxListView
end
无论我是否调用过foo(),当我退出应用程序时,我从Lua获得以下输出:

~wxLuaObject -2 1 0
如果我将作业注释掉,则在退出应用程序时不会得到任何输出。如果相反,我稍后在代码中将foo置为零:

myListView.foo = nil
我在执行该行时立即得到相同的输出,然后在程序退出时再次得到相同的输出

输出意味着什么?我做错了什么?我怎么修理它


谢谢

这似乎是对wxLuaObject被销毁且
m_reference==LUA_NOREF
(-2,在您的案例中)且LUA state对象未处于关闭状态(在您的案例中报告为0)的情况的内部诊断:


我已经在我的wxlua代码(2.8.12.1)中注释掉了这条消息,但是您可能需要检查您的版本并根据需要进行升级。这是源代码中唯一出现
~wxLuaObject
消息的地方。这似乎是无害的,但它可能指向您正在做的其他问题。

我可能错过了您正在尝试做的事情。我尝试了以下代码,效果很好(打印了我的消息,没有打印其他消息):
listCtrl=wx.wxListView(panel,ID\u listCtrl,wx.wxDefaultPosition,wx.wxDefaultSize);listCtrl.foo=function()打印“某物”结束;listCtrl.foo()
。这是在Windows上。你在哪个平台上?@Paul-谢谢你的回复!它是Win7 64位。我不知道它是否可以解释我的结果,但我忽略了提到我正在使用一个xrc文件作为gui布局。我在命令行提示符下使用“lua.exe myApp.lua”运行该程序,当它退出时,我会收到一条神秘的消息。谢谢!下次深入研究源代码时,我将不再犹豫:)
// this is from modules/wxlua/src/wxlbind.cpp (starts on line 83 in my version)
wxLuaObject::~wxLuaObject()
{
    if ((m_reference != LUA_NOREF) && m_wxlState->Ok() && !m_wxlState->IsClosing())
    {
        m_wxlState->wxluaR_Unref(m_reference, &wxlua_lreg_refs_key);
        m_reference = LUA_NOREF;
    }
    //else if (!m_wxlState->IsClosing())
    //    wxPrintf(wxT("~wxLuaObject %d %d %d\n"), (int)m_reference, (int)m_wxlState->Ok(), (int)m_wxlState->IsClosing());