0

已解决:事实证明我做的几乎所有事情都是正确的,并且 wxLua 库运行良好。问题在于将 Debug 中编译的库与 Release 中的其他库混合在一起。

邮件列表存档


我正在使用 wxLua 制作界面,但我面临着几个崩溃的问题,在寻找它们的来源后,我可以找到它。我正在加载标准 lua 解释器,而不是将我的 C++ 代码与 wxLua 链接,我创建了一个标准 lua 解释器,然后我在其中执行了一个 require("wx"),它加载了 wx.dll。我有一个可能的原因的想法,所以我会问,以防这是一种已知的行为。前几个问题?

  1. 首先在 wxWidgets 中,事件(单击、单元格更改、树项激活等)是同步还是异步调度的?

  2. 如果是异步的,是否有可能事件是同时针对相同 lua 状态的调度程序?

我拥有的是一个带有多个项目和一个网格的树控件,因此当树中的一个项目被激活时,网格被填满。我目前连接到树项目激活、树项目右键单击、网格单元更改的事件。

假设在主循环上运行的 wxWidget 线程是 A(3。我相信这是加载 lua 脚本的线程,不是吗?),当我激活一个树节点时,一个事件(evt1)将在事件队列(4。不是吗?),主循环将检查挂起的事件,它会找到事件(evt1)并调度它(5。但是线程会调用来自事件处理程序的lua函数运行主循环(A)还是会创建第二个线程(B)?)。

如果问题 5 是为执行处理程序创建一个新线程,树中的另一个事件 (evt2) 是否可以在事件队列中排队,然后主循环线程 (A) 调度它创建一个新线程 (C)在前一个事件线程(B)尚未返回时访问和修改 lua 状态

到目前为止,我的孔测试一直在重新绘制网格,同时在树项上单击几个计时器,因此事件处理程序不会立即返回。

我认为可以总结所有以前的问题,但是,wxLua 是否保护从 wxLua 内部访问 lua 状态?

提前致谢。

此致。

哈维。

注意:我将在邮件列表上发布相同的问题,只是让您知道。我会将解决方案从一个复制到另一个。

4

1 回答 1

2

我不知道lua是什么,但是 wxWidgets GUI 事件都在主线程中处理。不创建新线程。

于 2013-04-12T20:24:29.800 回答